ホームページ >データベース >mysql チュートリアル >条件に基づいてデータベースの結果をさまざまな列で並べ替えるにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。