如何使用 CASE 語句在 MySQL 中基於多個時間戳記列對資料行進行排序?

Susan Sarandon
發布: 2024-11-15 09:59:02
原創
579 人瀏覽過

How to Order Rows Based on Multiple Timestamp Columns in MySQL with CASE Statement?

MYSQL ORDER BY CASE 問題

這個問題對根據 WHERE 條件根據特定列對行進行排序提出了挑戰。考慮所提供的具有四行和時間戳列的資料庫。目標是對行進行排序,以便兩個時間戳列都被視為單一排序標準。

提供的查詢最初根據id_one 和id_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
登入後複製

此方法會產生一個輸出,其中行在每個id_one 或id_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 
登入後複製

在這個修改後的查詢中,timestamp_one 和timestamp_two 都被考慮進行排序,無論哪個ID 欄位符合WHERE 條件。 CASE 語句根據 id_one 和 id_two 值選擇適當的時間戳記。

此修改會產生所需的輸出,其中行作為單一時間戳列排序,同時考慮timestamp_one 和timestamp_two:


| id_one | id_two | 時間戳_一個| timestamp_two| timestamp_t |

| 27 | 27 35 | 35 9:30 | NULL |

| 35 | 35 27 | 27 空| 9:33 |

| 27 空| | 35 9:34 | 9:34 NULL |

| 35 | 35 27 | 27 空| 9:35 |

以上是如何使用 CASE 語句在 MySQL 中基於多個時間戳記列對資料行進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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