首頁 >資料庫 >mysql教程 >如何在保持 SQL SELECT 語句中的順序的同時刪除重複行?

如何在保持 SQL SELECT 語句中的順序的同時刪除重複行?

DDD
DDD原創
2025-01-07 09:21:42666瀏覽

How Can I Remove Duplicate Rows While Maintaining Order in a SQL SELECT Statement?

在同一SELECT 語句中使用DISTINCT 和ORDER BY

執行SELECT 語句從MonitoringJob降序排列,資料庫可能會傳回重複值。若要在保持指定順序的同時消除重複項,可以使用 DISTINCT 關鍵字。但是,單獨使用 DISTINCT 可能還不夠。

在提供的範例中,單獨使用 DISTINCT 關鍵字無法解決問題,因為 ORDER BY 子句依賴 CreationDate 資料列,該列包含重複值。為了解決這個問題,可以將 MAX() 等聚合函數與 DISTINCT 關鍵字結合使用,以根據特定欄位對結果進行排序,同時仍排除重複項。此外,需要使用 GROUP BY 子句來根據 DISTINCT 操作中使用的欄位建立唯一類別。

適當的解決方案是:

SELECT DISTINCT Category, MAX(CreationDate)
FROM MonitoringJob
GROUP BY Category
ORDER BY MAX(CreationDate) DESC, Category

此修改後的語句將確保重複項透過按MAX(CreationDate) 列排序,然後按類別排序,可以刪除它們,同時保留所需的順序。結果,將獲得所需的輸出,根據最新的 CreationDate 值按降序列出不同的類別。

以上是如何在保持 SQL SELECT 語句中的順序的同時刪除重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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