首頁  >  文章  >  資料庫  >  在 MySQL 中,如何在按名稱分組之前按日期和時間排序?

在 MySQL 中,如何在按名稱分組之前按日期和時間排序?

Linda Hamilton
Linda Hamilton原創
2024-11-01 22:59:29449瀏覽

How to Order by Date and Time Before Grouping by Name in MySQL?

ORDER BY 日期和時間在MySQL 中的GROUP BY 名稱之前

在MySQL 中,ORDER BY 子句應用在GROSQL 子句應用在GROSQL 中,ORDER BY 子句應用在GROSQL 中,子句之前。但是,在某些情況下,使用者需要先按日期和時間欄位對資料進行排序,然後再對名稱列執行 GROUP BY。

考慮下表:

name date time
tom 2011-07-04 01:09:52
tom 2011-07-04 01:09:52
mad 2011-07-04 02:10:53
mad 2009-06-03 00:01:01

目標是先擷取最舊的名稱。以下查詢失敗:

SELECT *
ORDER BY date ASC, time ASC
GROUP BY name

這是因為 GROUP BY 在 ORDER BY 之前應用,導致在排序之前對具有相同名稱的記錄進行分組。結果,沒有達到預期的排序。

解決方案:

要解決此問題,可以使用以下方法:

SELECT *
FROM (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC
) AS sub
GROUP BY name

在此查詢中:

  • 子查詢透過先按日期然後按時間升序對行進行排序來建立中間結果集。
  • 外部查詢從子查詢中選擇所有欄位並對名稱列執行 GROUP BY 操作。

透過使用此方法,GROUP BY 應用於排序的結果集,確保首先檢索最舊的名稱,無論日期和時間如何田野。

以上是在 MySQL 中,如何在按名稱分組之前按日期和時間排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn