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');