MySQL で CASE ステートメントを使用して、特定の ID で優先順位を付けたタイムスタンプで行を並べ替えるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-23 06:00:18
オリジナル
230 人が閲覧しました

How to Order Rows by Timestamps Prioritized by Specific IDs using CASE Statement in MySQL?

MYSQL ORDER BY CASE 問題: 順序付けのためのタイムスタンプの結合

提示されたシナリオでは、4 つの行を持つテーブルがあり、各行は2 つの ID と 2 つのタイムスタンプが含まれます。タスクは、4 つの行をすべて取得し、特定の方法でタイムスタンプに基づいて順序付けすることです。

目標は、id_one が 27 と一致する場合は timestamp_one 列を優先して順序付けし、id_two が 27 と一致する場合は timestamp_two 列を優先することです。期待される出力は、2 つのタイムスタンプ列が 1 つであるかのように行が順序付けされることです。

これを実現するには、既存のステートメントは次のとおりです。

SELECT id_one, id_two, timestamp_one, timestamp_two
FROM tablename
WHERE id_one = 27
    OR id_two = 27
ORDER BY
    CASE
        WHEN id_one=27 THEN timestamp_one
        WHEN id_two=27 THEN timestamp_two
    END DESC
ログイン後にコピー

この更新されたステートメントでは、id_one が 27 の場合は timestamp_one による順序付け、id_two が 27 の場合は timestamp_two による順序付けが優先されます。CASE ステートメントにより、各行に正しいタイムスタンプ列が使用されることが保証されます。

結果の出力は次のように並べられます。

-------------------------------------------------------------------
|   id_one   |   id_two   |   timestamp_one   |   timestamp_two   |
-------------------------------------------------------------------
|     27     |     35     |        9:30       |        NULL       |
-------------------------------------------------------------------
|     35     |     27     |        NULL       |        9:33       |
-------------------------------------------------------------------
|     27     |     35     |        9:34       |        NULL       |
-------------------------------------------------------------------
|     35     |     27     |        NULL       |        9:35       |
-------------------------------------------------------------------
ログイン後にコピー

これは、2 つのタイムスタンプ列が 1 つであるかのように行を順序付けするという要件を満たし、id_one が 27 の行では timestamp_one を優先し、id_two が 27 の行では timestamp_two を優先します。

以上がMySQL で CASE ステートメントを使用して、特定の ID で優先順位を付けたタイムスタンプで行を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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