我有一个包含以下列的表格... 节点,日期_时间,市场,价格
我想删除每个节点,日期时间以外的所有记录。
SELECT Node, Date_Time, MAX(Price)
FROM Hourly_Data
Group BY Node, Date_Time
这得到了我希望看到的结果,但无法弄清楚如何删除其他记录。
注意 - 此表没有ID
答案 0 :(得分:1)
以下步骤相当于一个简单的单命令,它可以在任何关系数据库中使用:
请记住锁定发生,您需要一些维护时间来执行此操作。
有更简单的方法可以实现这一点,但它们是特定于DBMS的。
答案 1 :(得分:0)
这是一个简单的sql-server方法,它在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