SQLクエリでいくつかの問題に直面しています
select * from country order by
case when country_id in(254,43,253,91,82,175) then 0 else country.country_id end
ASC
レコードに最初のケース条件が与えられるようにしたいのですが、...のようなクエリで与えられる方法で順序付けられます。
254
43
253
91
82
175
SQLクエリでいくつかの問題に直面しています
select * from country order by
case when country_id in(254,43,253,91,82,175) then 0 else country.country_id end
ASC
レコードに最初のケース条件が与えられるようにしたいのですが、...のようなクエリで与えられる方法で順序付けられます。
254
43
253
91
82
175
以下に準拠したい場合の解決策は次のcore SQL-99 standard
とおりです。
SELECT *
FROM country
ORDER BY
CASE
WHEN country_id IN (254,43,253,91,82,175) THEN 1
ELSE 666
END, country_id
MySQLを使用している場合、これが必要なクエリだと思います。
SELECT *
FROM country
ORDER BY FIELD(country_id, 175, 82, 91, 253, 43, 254) DESC -- reverse order here
, country_id ;
またはこれ(任意のSQL製品の場合):
SELECT *
FROM country
ORDER BY CASE country_id
WHEN 254 THEN 1
WHEN 43 THEN 2
WHEN 253 THEN 3
WHEN 91 THEN 4
WHEN 82 THEN 5
WHEN 175 THEN 6
ELSE 7
END
, country_id ;