2013-09-01 33 views
0

有沒有辦法通過輸入數組來排序查詢結果?排序方式?哪裏col IN數組

SELECT * FROM target_table WHERE id IN (4,2,6,1) ORDER BY ??? 
由輸入數組(4,2,6,1)必要

正如你可能會注意到這會給你在target_table ID的結果順序,沒有,有沒有解決此問題的方法?

+2

可能MySQL中的ORDER BY值的重複(http://stackoverflow.com/questions/958627/mysql-order-by-values-within-in) – MarcinJuraszek

+0

嘗試使用「FIELD」函數 –

回答

2

您可以重複陣列中的order by

SELECT * 
FROM target_table 
WHERE id IN (4, 2, 6, 1) 
ORDER BY field(id, 4, 2, 6, 1); 

如果你只是想一次列出的數字,你可以把值在select列表,並使用having

SELECT t.*, field(id, 4, 2, 6, 1) as ival 
FROM target_table t 
HAVING ival > 0 
ORDER BY ival;