例如,我有这个代码:
SELECT *
FROM table_name
WHERE column_name IN (value6,value4,value11,value19)
Run Code Online (Sandbox Code Playgroud)
有没有办法在查询中按照确切的顺序排序结果?上面的代码返回table_name的默认顺序,完全忽略IN值的顺序.我知道我可以在PHP中进行额外的编码,以便根据IN值正确排序,但这会产生很大的开销.
Mch*_*chl 24
SELECT
*
FROM
table_name
WHERE column_name IN (value6,value4,value11,value19)
ORDER BY FIELD(column_name,value6,value4,value11,value19)
Run Code Online (Sandbox Code Playgroud)
这里的解释:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field
- FIELD(STR,STR1,STR2,STR3,...)
返回str1,str2,str3,...列表中str的索引(位置).如果未找到str,则返回0.