|
|
|
| Здравствуйте.
Из ряда записей с id, зная некое id_n надо получить от id_n до макс. id, то бишь до конца таблицы, но в обратном порядке, т.е. из ряда:
1
2
3
4
5
6
и имея id_n = 4 надо получить записи в след. порядке: 6,5.
Хочеться в один запрос.
p.s. В литературе написано: "Для того, чтобы выбрать все строки с определенного смещения и до конца результата, вы можете использовать значение -1 в качестве второго параметра:SELECT * FROM table LIMIT 5,-1;"
Почему mysql ругается на такой запрос? Версия не та? Стоит 5.1.40-community. | |
|
|
|
|
|
|
|
для: Dante
(03.03.2011 в 23:53)
| | The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants, with these exceptions.
Это из мануала. Оба числа в лимите должны быть неотрицательными числовыми константами.
В вашем случае я бы сделала так.
Первым запросом узнала, сколько в базе записей.
Вторым запросом бы поставила это количество в LIMIT.
И разложила бы все в реверсном порядке уже на уровне php. | |
|
|
|
|
|
|
|
для: Лена
(04.03.2011 в 00:12)
| | Черт с ним с порядком.. Он на скорость не влияет. Но неужели mySQL не способен одним запросом выбрать записи от id до конца?.. | |
|
|
|
|
|
|
|
для: Dante
(04.03.2011 в 08:29)
| | Для сортировки данных используется выражение ORDER BY `field_name` [ASC | DESC] [, `field_name2` [ASC | DESC]]
Существует 2 направления сортировки данных в SQL-запросе. ASC – по возрастанию и DESC – по убыванию. По-умолчанию данные сортируются по возрастанию.
Пример:
[mysql]mysql> SELECT `id` FROM `table` ORDER BY `id`;
mysql> SELECT `id` FROM `table` ORDER BY `id` ASC;[/mysql]
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+----+
mysql> SELECT `id` FROM `table` ORDER BY `id` DESC;
+----+
| id |
+----+
| 5 |
| 4 |
| 3 |
| 2 |
| 1 |
+----+ | |
|
|
|
|
|
|
|
для: dirol
(04.03.2011 в 08:53)
| | Спасибо за справку. Вопрос в том, каким образом сыграть на ORDER BY и LIMIT в ОДНОМ запросе, чтобы из ряда
1
2
3
4
5
получить зная id_n=3
5,4
или хотя бы как ОДНИМ запросом получить 4,5. | |
|
|
|
|
|
|
|
для: Dante
(04.03.2011 в 09:29)
| |
$result = mysql_query("SELECT id FROM tags ORDER BY id ASC LIMIT 2,10", $sql2);
while (list($id) = mysql_fetch_array($result)) {
echo "$id<br />\n";
}
|
двойка указывает что выводить надо пропустив три записи в базе. все начинается же с 0
а 10 указывает сколько надо выводить максимально результатов
$result = mysql_query("SELECT id FROM tags WHERE id IN (4,5)", $sql2);
while (list($id) = mysql_fetch_array($result)) {
echo "$id<br />\n";
}
|
таким запросом выведутся только записи 4 и 5 . туда можно передавать масивом запросы для получения нужных записей из таблицы | |
|
|
|
|
|
|
|
для: dirol
(04.03.2011 в 09:40)
| | Откуда взялось 10? )) Надо до конца таблицы, хоть 0 хоть 100... Не хочеться отдельный запрос делать, чтобы узнать сколько конкретно до конца таблицы. Т.к. очень быстро добавляются записи в таблицу, и быстро выбираются. | |
|
|
|
|
|
|
|
для: Dante
(04.03.2011 в 10:00)
| | попробуй так
$result = mysql_query("SELECT id FROM tags WHERE id > 2 ORDER BY id ASC", $sql2);
while (list($id) = mysql_fetch_array($result)) {
echo "$id<br />\n";
}
|
2 это то что мы знаем и от нее отталкиваемся пропуская первые записи начинаем выборку с 2 | |
|
|
|
|
|
|
|
для: dirol
(04.03.2011 в 11:13)
| | Спасибо. Ну я и баран, что ж меня то так на танцы с LIMIT переклинило, что про WHERE забыл...(( | |
|
|
|