2012-06-03 271 views
0

我需要訂購表格,但我不知道用戶如何選擇列。按優先級列表排列的MySQL

例子:

select * 
from table 
order by field1, field2, field3 

但用戶可以更改的字段順序:字段3,字段1,字段2

我想在這樣的事情:

select * 
from table 
order by 
some_fuction (
field1, priority 
field2, priority 
field3, priority 
) 

我在哪裏可以設置每個領域的優先級。可能嗎?

感謝, 安德森

+3

是怎樣的用戶訪問您的數據?通過腳本?如果是這樣,讓腳本處理它 –

回答

1

使用ifcase你可以得到一個解決方案。
你可以看一下貼在SO各種解決方案:

  1. 「IF」 statement in MYSQL ORDER BY?
  2. MySQL order by multiple case statements
  3. complex sql order by
  4. MySQL : Conditional ORDER BY to only one column

,並可能更多...

+0

我不喜歡用if或case,讓這樣的事情: SELECT * 從表 爲了通過 案例ID 1時,然後FIELD1 2時,然後場2 結束 事件ID 當1然後字段1 當2然後字段2 結束 。 。 。 – user1433588

+0

@ user1433588 - 這些是MySQL級別的唯一選項。否則,在構建sql查詢之前,您必須在服務器腳本級別進行決定。 –