按与IN语句相同的顺序排序查询结果

时间:2009-05-20 13:55:00

标签: mysql

我有以下查询

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

其结果由表格广告系列的主键排序,即'id'。这不是我想要的订单。

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

idStrOne, idStrTwo, idStrThree

我如何获得此订单?

1 个答案:

答案 0 :(得分:2)

您可以尝试在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);