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