WHERE
`id`
IN
(
1
,
7
,
3
,
5
)
ORDER
BY
`id`
DESC
有时以上排序并不能满足我们的需求. 例如, 我们想要按 id 以
5
,
3
,
7
,
1
的顺序排列, 该如何实现. 这也是很多国内外同行经常遇到的问题之一.
下面我们给出按表中某字段, 以我们想要的列表方式排序的解决方案.
用"按字段排序" (
ORDER
BY
FIELD).
ORDER
BY
FIELD(`id`,
5
,
3
,
7
,
1
)
要注意的是, FIELD 后面是没有空格的.
因此, 完整的 SQL 为:
SELECT
*
FROM
`MyTable`
WHERE
`id`
IN
(
1
,
7
,
3
,
5
)
ORDER
BY
FIELD(`id`,
5
,
3
,
7
,
1
)
SELECT
*
FROM
`MyTable`
WHERE
`name`
IN
(
'
张三
'
,
'
李四
'
,
'
王五
'
,
'
孙六
'
)
ORDER
BY
FIELD(`name`,
'
李四
'
,
'
孙六
'
,
'
张三
'
,
'
王五
'
)
Handy MySQL - ORDER BY FIELD
Sort results by order in list