Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对与WHERE条件中指定的id相同的查询结果进行排序?_Php_Mysql - Fatal编程技术网

Php 如何对与WHERE条件中指定的id相同的查询结果进行排序?

Php 如何对与WHERE条件中指定的id相同的查询结果进行排序?,php,mysql,Php,Mysql,我有一个这样的问题 SELECT * FROM test JOIN test2 ON test.id=test2.id WHERE test.id IN (562,553,572) GROUP BY test.id 其结果按如下顺序排列:553562572 但是我需要的顺序与我在(562553572)条件中的中指定的顺序相同。order BY CASE test.id 当562时,则为0 当553然后1 当572那么2 结束一种方式如下: SELECT * FROM test JO

我有一个这样的问题

SELECT *
  FROM test JOIN test2 ON test.id=test2.id
 WHERE test.id IN (562,553,572)
 GROUP BY test.id
其结果按如下顺序排列:553562572


但是我需要的顺序与我在(562553572)条件中的
中指定的顺序相同。

order BY CASE test.id
当562时,则为0
当553然后1
当572那么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;
除非计算聚合,否则不需要分组。ELSE子句在这里是多余的,但通常最好包含它。

您可以使用以下方法完成此操作:


无法在_集合()中查找_:


这与
字段
功能有多大区别?SQL标准?@Nirmal:是的-我不知道哪种DBMS支持字段函数(但肯定不是全部);OTOH,我不知道有哪个数据库管理系统不支持CASE。
SELECT ... ORDER BY FIELD(`test`.`id`, 562, 553, 572)
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');