如何订购与WHERE条件中指定的id相同的查询结果?

时间:2010-10-21 05:25:14

标签: php mysql

我有这样的查询

SELECT *
  FROM test JOIN test2 ON test.id=test2.id
 WHERE test.id IN (562,553,572)
 GROUP BY test.id

其结果如下:553,562,572 ......

但我需要我在IN(562,553,572)条件中指定的相同顺序。

4 个答案:

答案 0 :(得分:10)

您可以使用FIELD()执行此操作:

SELECT ... ORDER BY FIELD(`test`.`id`, 562, 553, 572)

答案 1 :(得分:2)

ORDER BY CASE test.id WHEN 562 THEN 0 WHEN 553 THEN 1 WHEN 572 THEN 2 END

答案 2 :(得分:2)

一种方式是这样的:

SELECT *
  FROM test JOIN test2 ON test.id=test2.id
 WHERE test.id IN (562,553,572)
 ORDER BY CASE test.id
          WHEN 562 THEN 1
          WHEN 553 THEN 2
          WHEN 572 THEN 3
          ELSE          4
          END;

除非您正在计算聚合,否则不需要GROUP BY。 ELSE子句在这里是多余的,但包含它通常是一个好主意。

答案 3 :(得分:2)

可以使用FIND_IN_SET()执行某些操作:

SELECT * 
  FROM test 
   JOIN test2 
   ON test.id = test2.id
  WHERE test.id IN (562,553,572)
  ORDER BY FIND_IN_SET(test.id, '562,553,572');