2015-06-03 122 views
0

我有這個疑問:SQL ORDER BY多個領域

SELECT 
    id, name 
FROM 
    data 
ORDER BY 
    FIELD(id, 4, 5, 8, 10) DESC, 
    name 

IDS 4, 5, 8, 10是往上頂。到現在爲止還挺好。但後來我想按name排序。這不起作用。也許FIELD已經確定了特定的順序?我可以更改SQL嗎,所以我仍然可以告訴SQL什麼樣的ID應該在頂部(真/假關係),但按名稱進行最終排序?某種枚舉?

FIELD(id, 4, 5, 8, 10)中的ID來自另一個來源。它們表示在外部源中是否有數據要給予id。

+2

你使用哪個DB? –

+0

如果你改變命令,比如'ORDER BY name,FIELD(id,4,5,8,10)' – Rahul

+0

我使用MySQL 5.5 – sod

回答

5

你可以使用ANSI 92 Compatible CASE WHEN這樣。

SELECT 
    id, name 
FROM 
    data 
ORDER BY 
    CASE WHEN id IN (4, 5, 8, 10) THEN 0 ELSE 1 END ASC, 
    name 
+0

Works!非常感謝。 – sod

+0

沒問題,在你的問題中總是提到你的RDBMS。你會得到更快,更準確的答案 – ughai

+0

備註:FIELD做了一些不同的事情,但是在OP的情況下_this_就是他試圖完成的事情 –