ホームページ >データベース >mysql チュートリアル >条件に基づいてデータベースの結果をさまざまな列で並べ替えるにはどうすればよいですか?

条件に基づいてデータベースの結果をさまざまな列で並べ替えるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-18 21:11:02862ブラウズ

How to Sort Database Results by Different Columns Based on a Condition?

ORDER BY による条件付き順序付けを理解する

データベース クエリでは、ORDER BY 句を使用してクエリの結果を指定された順序で並べ替えることができます。注文。ただし、場合によっては、特定の列の値に基づいて条件付き順序付けを使用する必要がある場合があります。

問題: 型に基づいた異なる列による並べ替え

検討してください行がメンバーに対応するかグループに対応するかを決定する「Type」という列を含むテーブルがあるシナリオです。メンバーの行が姓 (LNAME) で昇順に並べ替えられ、グループの行がグループ名 (GROUPNAME) で昇順に並べ替えられるように結果を並べ替えたいと考えています。

間違った試み: 論理演算子の使用

提供された試行では、論理演算子 (if、or) を使用して条件文を作成します。間違ったクエリが生成されます:

SELECT * 
  FROM table 
 WHERE STATUS = 'Active' 
 ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC

解決策: IF 関数または CASE ステートメントの使用

この条件付き順序付けを実現するには、IF 関数またはCASE ステートメント:

IF関数:

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC

これは、IF 関数を使用して、TYPE 列の値に基づいて並べ替えに使用する列を決定します。

CASE ステートメント:

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC

これは CASE ステートメントを使用して TYPE 列の値を評価し、適切な列を返します。並べ替え。値 1 の ELSE 句により、不明な型の行が最後までソートされるようになります。

以上が条件に基づいてデータベースの結果をさまざまな列で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。