根据in Array获取Mysql数据顺序

时间:2015-10-09 11:45:32

标签: php mysql sql database

假设;

表名:用户

╔═══╦══════╦════╗
║ 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)的顺序获取数据。 任何解决方案。

2 个答案:

答案 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])