1

mysql db テーブルには、次のようなすべての国があります。

国テーブル

すべての国を次のように取得しました。

SELECT * FROM countries_table ORDER BY country_name

しかし、リストの一番上にいくつかの特定の国を表示したい:

特定の国

そして、その他はORDER BY country_nameになります

MYSQLPHPで解決できますか?

4

4 に答える 4

8

シンプルであまり知られていない MySQL のトリックがあります。

SELECT * FROM countries_table
ORDER BY name = 'Australia' desc,
         name = 'UAE' desc,
         name = 'Pakistan' desc,
         name = 'UK' desc,
         name = 'USA' desc,
         name asc;
于 2012-08-10T14:05:20.187 に答える
1

フィールドを使用

SELECT country_id, country_name 
FROM countries_table 
    ORDER BY 
FIELD(country_name, 'USA', 'UK', 'Pakistan', 'UAE', 'Australia') DESC,
country_name ASC

編集済み:コメント mvfありがとう

于 2012-08-10T14:09:06.770 に答える
0

を使用してそれを行う別の方法UNION

(SELECT * FROM countries_table
WHERE name IN('Australia', 'UAE', 'Pakistan', 'UK', 'USA')
ORDER BY name ASC)
UNION
(SELECT * FROM countries_table
WHERE name NOT IN('Australia', 'UAE', 'Pakistan', 'UK', 'USA')
ORDER BY name ASC)

ドキュメンテーション: UNION

于 2012-08-10T14:19:01.883 に答える
0

これはうまくいくはずです:

SELECT country_id,
     country_name
FROM countries_table
ORDER BY (CASE country_name WHEN 'Australia' THEN '1'
                            WHEN 'UAE' THEN '2' 
                            ...
                            ELSE country_name 
          END) ASC;
于 2012-08-10T14:00:57.713 に答える