[英]Removing Duplicates from table in SQL with no primary key
我正在尝试从表中删除重复项,例如:
Country State City Rate1 Rate2 Rate3
US CA Irvine 1 13 22
US CA Irvine 0 0 0
US WA Seattle 1 231 22
US WA Seattle 0 0 0
我正在尝试删除所有费率列 = 0 的重复记录
所以我想删除以下行:
Country State City Rate1 Rate2 Rate3
US CA Irvine 0 0 0
US WA Seattle 0 0 0
以下查询的变体:
WITH CTE AS(
SELECT myTable.*
, RN = ROW_NUMBER()OVER(PARTITION BY patientID ORDER BY ID)
FROM myTable
)
SELECT * FROM CTE
WHERE RN = 1
好的......所以像:
WITH CTE AS(
SELECT
myTable.*,
RN = ROW_NUMBER()OVER(PARTITION BY Country, State, City ORDER BY Rate1 DESC)
FROM myTable
)
DELETE FROM CTE
WHERE RN <> 1
不知道您要订购什么...您如何决定要删除哪些重复项? 在此示例中,它将删除 Rate1 低于最大值的所有内容
尝试如下,使用计数窗口函数确保值重复
WITH CTE AS(
SELECT *,
count()OVER(PARTITION BY Country, State, City ) as cnt
FROM myTable
) delete from cte where cnt>1 and rate1=0 and rate2=0 and rate3=0
WITH CTE AS(
SELECT
myTable.*,
ROW_NUMBER()OVER(PARTITION BY Country, State, City ORDER BY Rate1 DESC) AS RN
FROM myTable
)
DELETE FROM CTE
WHERE RN > 1
AND Rate1 =0 AND Rate2 =0 AND Rate3 =0 --since you mentioned only duplicates where all rates are 0 need to be removed
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.