2013-09-01 32 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;