MySQL按给定顺序选择WHERE IN

ken*_*tor 52 mysql

我有类似的东西

SELECT * FROM table WHERE id IN (118,17,113,23,72);
Run Code Online (Sandbox Code Playgroud)

如果我这样做,它会以ID升序返回行.有没有办法按IN语句中给出的顺序取回行?

nic*_*ico 95

你应该使用"ORDER BY FIELD".所以,例如:

SELECT * FROM table WHERE id IN (118,17,113,23,72) 
ORDER BY FIELD(id,118,17,113,23,72)
Run Code Online (Sandbox Code Playgroud)


Bri*_*ian 13

尝试使用FIND_IN_SET:

SELECT * FROM table WHERE id IN (118,17,113,23,72) 
    ORDER BY FIND_IN_SET(id, '118,17,113,23,72');
Run Code Online (Sandbox Code Playgroud)

  • `find_in_set`如何与`field`比较? (3认同)
  • @ShiningRay从手册看来,`FIELD`是一个简单的方法,`FIND_IN_SET`是更强大和复杂的,涉及字符串解析和`SET`创建. (2认同)