MYSQL ORDER BY CASE 問題:組合時間戳進行排序
在所呈現的場景中,我們有一個包含四行的表,其中每行包含兩個ID 和兩個時間戳記。任務是檢索所有四行,並以特定方式根據時間戳對它們進行排序。
目標是當 id_one 匹配 27 時優先排序 timestamp_one 列,並在 id_two 匹配 27 時優先排序 timestamp_two 列。預期的輸出是對行進行排序,就像兩個時間戳列是一個一樣。
為了實現這一點,我們可以將現有語句修改為如下:
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 | -------------------------------------------------------------------
這滿足排序的要求將行視為兩個時間戳列為一,對於id_one 為27 的行優先考慮timestamp_one,對於id_two 為27 的行優先考慮timestamp_two。
以上是如何在 MySQL 中使用 CASE 語句以特定 ID 優先權的時間戳記對資料列進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!