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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-23 06:00:18217ブラウズ

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 サイトの他の関連記事を参照してください。

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