如何在 MySQL 中依照條件時間戳記對行進行排序?

Linda Hamilton
發布: 2024-11-13 04:46:01
原創
368 人瀏覽過

How to Sort Rows Based on a Conditional Timestamp in MySQL?

MySQL ORDER BY CASE 排序問題

在 MySQL 中,ORDER BY 子句可讓您依照指定列對查詢結果進行排序。但是,在對取決於特定條件的多個欄位進行排序時,您可能會遇到困難。

考慮以下場景:

您有一個包含兩列的表格:timestamp_one 和 timestamp_two。您需要檢索 id_one 或 id_two 等於 27 的所有行。此外,您希望根據 id_one 或 id_two 是否為 27,根據 timestamp_one 或 timestamp_two 對結果進行排序。

雖然以下查詢正確檢索所需的行:

SELECT * FROM tablename 
WHERE id_one=27 OR id_two=27 
ORDER BY 
  CASE WHEN id_one=27 THEN timestamp_one END DESC, 
  CASE WHEN id_two=27 THEN timestamp_two END DESC
登入後複製

它按每一列單獨對行進行排序,而不是將它們組合成單個時間戳進行排序。

要解決此問題,您可以使用以下方法修改後的查詢:

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 
登入後複製

在此修改後的查詢中,我們透過使用單一CASE 表達式來確定排序順序來簡化ORDER BY 子句。這允許我們根據組合時間戳對行進行排序,該組合時間戳會根據 id_one 和 id_two 的值動態選擇適當的列(timestamp_one 或 timestamp_two)。

以上是如何在 MySQL 中依照條件時間戳記對行進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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