2

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
4

2 に答える 2

1

以下に準拠したい場合の解決策は次の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
于 2013-01-04T08:21:09.367 に答える
1

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 ;
于 2013-01-04T07:54:27.320 に答える