SQL查询中的IN值序列顺序

时间:2011-02-12 17:20:52

标签: mysql

例如我有这段代码:

SELECT *
FROM table_name
WHERE column_name IN (value6,value4,value11,value19)

有没有办法在查询中按照确切的顺序排序结果?上面的代码返回table_name的默认顺序,完全忽略IN值的序列。我知道我可以在PHP中进行额外的编码,以便根据IN值正确排序,但这会产生很大的开销。

2 个答案:

答案 0 :(得分:23)

SELECT 
  * 
FROM 
  table_name 
WHERE column_name IN (value6,value4,value11,value19) 
ORDER BY FIELD(column_name,value6,value4,value11,value19)

此处的说明:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field

  
      
  • FIELD(STR,STR1,STR2,STR3,...)
  •   
     

返回str的索引(位置)   str1,str2,str3,...列表。   如果未找到str,则返回0。

答案 1 :(得分:0)

对于DB不可知的答案,请看这里: Order resultset based on WHERE IN clause data 但是,我希望有一个与DB无关的数组结构。