首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中使用 CASE 語句以特定 ID 優先權的時間戳記對資料列進行排序?

如何在 MySQL 中使用 CASE 語句以特定 ID 優先權的時間戳記對資料列進行排序?

Barbara Streisand
發布: 2024-11-23 06:00:18
原創
275 人瀏覽過

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

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板