2015-03-26 7 views
-1

Существует запрос MySQL:MySQL - заказ ORDER BY

SELECT * FROM table ORDER BY param1, param2, param3 

Существует таблица, которая имеет приоритеты этих Params - пары, приоритет (целое).

Я хотел бы выполнить вышеуказанный запрос таким образом, чтобы параметр, имеющий наивысший приоритет, был на первом месте в инструкции ORDER BY, после этого второй, а третий будет последним.

Возможно ли это в MySQL. Если да - как?

+0

Как вид схемы? Вы не заказываете по параметрам, вы заказываете по столбцам (но это небольшая деталь). – Roger

+2

Это то, что вы хотите? 'SELECT * FROM table ORDER BY priority DESC' – gudthing

+0

Вы имеете в виду таблицу приоритетов, которая содержит имена столбцов, которые будут использоваться в ORDER BY? Если это так, вам нужно будет построить свой запрос динамически. Google для чего-то вроде 'mysql dynamic sql', чтобы узнать больше об этом. Ищите этот сайт также, я уверен, вы найдете много примеров использования динамического SQL в MySQL. –

ответ

0

Вы не заказ только конкретные значения в порядке column..you его по всей колонке, в своем приоритете колонке случае

SELECT * FROM table ORDER BY priority ASC 

Приоритет 1 будет первым (вы можете использовать DESC, если и хотят Priority 1, чтобы быть последним)

0

в MySQL, можно использовать find_in_set() или case (последний стандарт ANSI):

SELECT * 
FROM table 
ORDER BY find_in_set(priority, param1, param2, param3);