我有一个表具有以下列... 节点,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