Forum Webscript.Ru
Общие => Базы данных => Тема начата: Гость от 13 Сентября 2002, 15:17:08
-
Видно для профи достаточно взгляда.
Я же смотрю, как баран на ограду.
Имеем что-то типа Select id, value1, value2 from table order by value1 limit 0,10
, то есть выбрали 10 записей с наибольшим значением value1. А вот теперь надо бы одним махом эту выборку отсортировать по значению value2.
-
Забыл упомянуть. Речь идет о MySQL
-
...ORDER BY value1, value2 LIMIT 0,10
-
...ORDER BY value1, value2 LIMIT 0,10
да нет - это сортирует по двум критериям одновременно
попробую пример
----------------------------
ID | value1 | value2 |
----------------------------
1 | b | 10 |
2 | c | 40 |
3 | d | 20 |
4 | a | 20 |
Идея - сначала
Select id, value1, value2 from table order by value1 limit 0,3
вывод уже не содежит записи с d=3 !
И вот его то м надо отсортировать по value2
то есть вывод должен быть
----------------------------
ID | value1 | value2 |
----------------------------
1 | b | 10 |
4 | a | 20 |
2 | c | 40 |
А вот какой запрос к этому ведет???
-
Гость
тебе же уже написали
ORDER BY value1, value2 LIMIT 0,10
-
тебе же уже написали
Жаль, что ты постишь, не читая.
В вышеприведенном примере ORDER BY value1, value2 LIMIT 0,3
приведет к
4 | a | 20 |
1 | b | 10 |
2 | c | 40 |
а получить надо
1 | b | 10 |
4 | a | 20 |
2 | c | 40 |
Наверняка решалось бы вложенным запросом
что то типа SELECT ( SELECT * from table Order by value1 ) Order by value2
, но MYSQL их не поддерживает. Потому и спрашиваю профсовет.
-
Как вариант временная таблица.
А средствами языка а не MySQL нельзя вторую сортировку провести?
-
Согласен с NeoNox
Дергани всю выборку в массив, а затем отсортирую по полю \'value\'
-
Ленивый гость
я всегда читаю перед тем как пощу :) но я прочитала то, что ты написал словами :) (там не где не говорилось, что сортировка по value1 уже может нарушиться ;) ), а вот твой пример действительно прохлопала :)
SELECT ( SELECT * from table Order by value1 ) Order by value2
, но MYSQL их не поддерживает.
хм .. я не уверена, но боюсь такую конструкцию не поддерживает не только MySQL , но и SQL-99, по крайней мере после быстрого просмотра стандарта я там такого не нашла.
Думаю тебе лучше это реализовать как предложил Nox - с помощью средств языка.
-
Дергани всю выборку в массив, а затем
Не согласен, для достаточно больших массивов данных и всяких заморочек с кодовыми таблицами такой метод не подойдет. Видимо придется тебе всетаки с мускулом помучиться: если поля по которым ты сортируешь не целочисленные то проиндексуй и тому подобное.
В противном случае если массивы коротенькие и сортировать надо цифры или буквы латинницы то метод NeoNox-a не повлияет на производительность.