我有以下 mysql 查询:
SELECT
col1,
col2,
col3
FROM
guests
WHERE
active = 1 AND
guestId IN (233, 255, 254, 226, 182, 231, 113, 121)
然而,当我得到结果时,我得到的是按 guestId(已编入索引)升序排列的结果(从 121 开始到 255 结束)。我需要按特定顺序在我的网站上显示结果。有什么方法可以绕过默认顺序吗?
谢谢。
最佳答案
您必须在 ORDER BY 子句中指定自定义顺序:
SELECT col1, col2, col3 FROM guests
WHERE active = 1 AND guestId IN (233, 255, 254, 226, 182, 231, 113, 121)
ORDER BY FIND_IN_SET(guestId, '233,255,254,226,182,231,113,121');
内置的 FIND_IN_SET()
函数返回一个整数,它是第一个参数在列表中找到匹配项的位置。请注意,该列表是包含逗号分隔列表的单个字符串参数,而您的 IN()
谓词需要可变数量的参数。此外,IIRC 在您提供给 FIND_IN_SET() 的列表中不能有空格。
关于php - mysql查询,自定义顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24369883/