【问题标题】:Order the results of a query by the same order as the IN statement [duplicate]按与 IN 语句相同的顺序对查询结果进行排序[重复]
【发布时间】:2010-10-27 15:31:18
【问题描述】:

我有以下问题

SELECT * FROM campaigns where campaign_id IN ( 'idStrOne', 'idStrTwo', 'idStrThree' );

其结果按表广告系列的主键“id”排序。这不是我想要的顺序。

我希望结果以与 IN 函数的参数相同的顺序返回。所以在这种情况下,我想要的顺序是

idStrOne, idStrTwo, idStrThree

我如何得到这个订单?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以尝试在 ORDER BY 子句中添加 CASE 表达式

    SELECT * 
    FROM campaigns 
    WHERE campaign_id IN ( 'idStrOne', 'idStrTwo', 'idStrThree' )
    ORDER BY 
    (CASE campaign_id WHEN 'idStrOne' THEN 1 WHEN 'idStrTwo' THEN 2 ELSE 3 END);
    

    【讨论】:

    • +1 喜欢按顺序排列的 case 语句。一直使用它,非常有价值的工具!
    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2017-01-14
    • 1970-01-01
    相关资源
    最近更新 更多