我有一個表具有以下列... 節點,DATE_TIME,市場,價格SQL消除重複,沒有ID
我想刪除所有,但1個記錄每個節點,日期時間。
SELECT Node, Date_Time, MAX(Price)
FROM Hourly_Data
Group BY Node, Date_Time
得到的結果我想看看,但無法弄清楚如何刪除其他記錄。
注 - 沒有針對此表
我有一個表具有以下列... 節點,DATE_TIME,市場,價格SQL消除重複,沒有ID
我想刪除所有,但1個記錄每個節點,日期時間。
SELECT Node, Date_Time, MAX(Price)
FROM Hourly_Data
Group BY Node, Date_Time
得到的結果我想看看,但無法弄清楚如何刪除其他記錄。
注 - 沒有針對此表
這裏是一個簡單的sql服務器方法,它在cte中創建一個行號並從中刪除。我相信這種方法也適用於大多數支持窗口函數和公共表表達式的RDBMS。
;WITH cte AS (
SELECT
*
,RowNum = ROW_NUMBER() OVER (PARTITION BY Node, Date_Time ORDER BY Price DESC)
FROM
Hourly_Data
)
DELETE
FROM
cte
WHERE
RowNum > 1
謝謝,該行編號正是我所需要的。剛剛在測試表上測試過,並且即將開始運行在全表上 –
很高興爲您提供幫助,未來如果您可以使用您正在使用的數據庫服務器標記您的問題, sql-server,oracle等,你會得到更多人更快的響應。乾杯。 – Matt
這裏有步驟,這些步驟,而解決方法不是簡單的一個命令將在任何關係型數據庫的工作沒有ID:
只要記住發生了鎖定,並且需要一些維護時間來執行此操作。
有更簡單的方法來實現這一點,但它們是DBMS特有的。
您正在使用哪些DBMS?答案將取決於數據庫供應商。 –
顯示您的表格架構 – scaisEdge