ホームページ > データベース > mysql チュートリアル > MySQL で列の値に基づいてデータを動的に並べ替えるにはどうすればよいですか?

MySQL で列の値に基づいてデータを動的に並べ替えるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-14 17:49:02
オリジナル
1026 人が閲覧しました

How Can I Dynamically Sort Data Based on Column Values in MySQL?

条件付きステートメントによる動的並べ替え

このシナリオでは、特定の列に格納されている値に基づいて ORDER BY 句を変更することを目的としています。 、「タイプ」など。課題は次のとおりです:

  • Type が「Member」の場合は、LNAME で昇順に並べ替えます。
  • Type が「Group」の場合は、GROUPNAME で昇順に並べ替えます。

IF 関数による解決策

最初に次のクエリを提案しました:

SELECT * 
FROM table 
WHERE STATUS = 'Active' 
ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC
ログイン後にコピー

しかし、このアプローチは間違っています。代わりに、次のように MySQL 内で IF 関数を利用できます。

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC
ログイン後にコピー

CASE ステートメントを使用した代替ソリューション

もう 1 つのオプションは、CASE ステートメントを使用することです。柔軟性の向上:

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC
ログイン後にコピー

CASE ステートメントは Type 列を評価し、条件に基づいて適切な並べ替え値を返します。 CASE ブロックの結果は並べ替えに使用されます。

ELSE 句を使用して、WHEN 句で明示的に指定されていない他の値を処理できることに注意してください。この例では、これらのシナリオが並べ替え結果の最後に表示されるように、これらのシナリオを処理するために値 1 を割り当てました。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート