MySQL 按逗号分隔列表排序

Chr*_*bbs 0 mysql

我有以下 MySQL 查询

SELECT * FROM Characters WHERE CharacterID IN (30, 29, 1, 292, 51)
Run Code Online (Sandbox Code Playgroud)

返回我的字符列表,如下所示

|   CharacterID   |   CharacterName  |
--------------------------------------
|        1        |    Character 1   | 
|       29        |    Character 29  | 
|       30        |    Character 30  | 
|       51        |    Character 51  | 
|      292        |    Character 292 | 
Run Code Online (Sandbox Code Playgroud)

我需要它以与原始逗号分隔值相同的顺序返回。所以在这个特定的例子中,我需要它返回......

|   CharacterID   |   CharacterName  |
--------------------------------------
|       30        |    Character 30  | 
|       29        |    Character 29  | 
|        1        |    Character 1   | 
|      292        |    Character 292 | 
|       51        |    Character 51  | 
Run Code Online (Sandbox Code Playgroud)

无论如何我可以具体说一些类似的话

SELECT * FROM Characters WHERE CharacterID IN (30, 29, 1, 292, 51)
ORDER BY (CharacterID, specifically in the order of (30, 29, 1, 292, 51))
Run Code Online (Sandbox Code Playgroud)

sca*_*dge 5

您可以使用FIELD()排序

SELECT * FROM Characters WHERE CharacterID IN (30, 29, 1, 292, 51)
ORDER BY FIELD(CharacterID, 30, 29, 1, 292, 51)
Run Code Online (Sandbox Code Playgroud)

FIELD() 是一个返回逗号分隔列表索引位置的函数