繁体   English   中英

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

[英]How can I order a query result same as the id specified in the WHERE condition?

我有这样的查询

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)条件下指定的相同顺序。

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

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

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

一种方法是这样的:

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子句在这里是多余的,但包含它通常是个好主意。

可以用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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM