假设;
表名:用户
╔═══╦══════╦════╗
║ id║ name ║ age║
╠═══╬══════╬════╣
║ 5 ║ a ║ 25 ║
║ 8 ║ b ║ 12 ║
║ 10║ c ║ 13 ║
║ 12║ d ║ 16 ║
║ 14║ e ║ 21 ║
╚═══╩══════╩════╝
查询:
SELECT *
FROM user
WHERE id IN (12,4,14,5,10);
现在问题是数据来自ASC,但我想按照(12,4,14,5,10)的顺序获取数据。 任何解决方案。
答案 0 :(得分:6)
使用field()
:
SELECT *
FROM user
WHERE id IN (12, 4, 14, 5, 10)
ORDER BY field(id, 12, 4, 14, 5, 10);
答案 1 :(得分:2)
您可以使用Field()
运营商。返回str1,str2,str3,...列表中str的索引(位置)。如果未找到str,则返回0。
WHERE id IN([ids any order])
ORDER BY FIELD(id, [ids in order])