【问题标题】:MySQL Order By Comma Separated List [duplicate]MySQL按逗号分隔列表排序[重复]
【发布时间】:2016-11-03 22:30:48
【问题描述】:

我有以下 MySQL 查询

SELECT * FROM Characters WHERE CharacterID IN (30, 29, 1, 292, 51)

返回我的字符列表如下

|   CharacterID   |   CharacterName  |
--------------------------------------
|        1        |    Character 1   | 
|       29        |    Character 29  | 
|       30        |    Character 30  | 
|       51        |    Character 51  | 
|      292        |    Character 292 | 

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

|   CharacterID   |   CharacterName  |
--------------------------------------
|       30        |    Character 30  | 
|       29        |    Character 29  | 
|        1        |    Character 1   | 
|      292        |    Character 292 | 
|       51        |    Character 51  | 

有没有什么地方可以具体说一下

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你可以通过 FIELD() 使用 order

    SELECT * FROM Characters WHERE CharacterID IN (30, 29, 1, 292, 51)
    ORDER BY FIELD(CharacterID, 30, 29, 1, 292, 51)
    

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

    【讨论】:

    • 我会试一试,谢谢。显然我的 Google-fu 今天关闭了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2014-02-19
    • 2020-08-25
    • 1970-01-01
    • 2010-10-14
    相关资源
    最近更新 更多