如何以与子句中给出的顺序相同的顺序获取查询结果

Joh*_*ohn 2 php mysql

我有一个像下面这样的表,id是主键

      ID Name
      1  a
      2  b
      3  c
      4  d
      5  e 
Run Code Online (Sandbox Code Playgroud)

并有如下查询.此查询是在用户输入选项的php文件中创建的.

    select name from table where id in (1,5,3)
Run Code Online (Sandbox Code Playgroud)

我得到结果("a","c","e"),我猜这是正常的,因为默认的主键排序顺序.但是我希望结果按照与"in"子句相同的顺序排序.所以我希望返回值为("a","e","c").有没有办法在mysql中获取它.

Rag*_*ull 5

你可以简单地使用FIELD():

select name from TableName where id in (1,5,3)
ORDER BY field(id,1,5,3)
Run Code Online (Sandbox Code Playgroud)

结果:

NAME
a
e
c
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle中查看结果.

  • 我从来没有使用过这样的东西,我不知道那种与现场操作员的那种.很有用. (2认同)