CP表,结构如下
ID 产品名称 型号 单位 单价
1 镀锌钢管 DN50 m 25.2
2 焊接钢管 DN20 m 12.5
3 焊接钢管 DN65 m 33.6
4 镀锌钢管 DN50 m 25.2
5 镀锌钢管 DN100 m 50.69
......上万条,不知道有多少钟产品重复这4个字段
SQL语句要求把 产品名称、型号、单位、单价4个字段都重复的值查出来(如上表中的第1、4重复),谢谢!
怎样删除这些多余的重复记录,只留下一条
怎样删除这些多余的重复记录,只留下一条
追答您可以使用以下SQL语句来删除这些多余的重复记录:
WITH cte AS (
SELECT MIN(ID) AS MinID, 产品名称, 型号, 单位, 单价
FROM CP表
GROUP BY 产品名称, 型号, 单位, 单价
HAVING COUNT(*) > 1
)
DELETE FROM CP表
WHERE (产品名称, 型号, 单位, 单价) IN (
SELECT 产品名称, 型号, 单位, 单价
FROM cte
) AND ID NOT IN (
SELECT MinID
FROM cte
);
这段代码使用了 Common Table Expression (CTE) 和 INNER JOIN 语句来删除多余的重复记录。首先,通过 CTE 来获取重复记录中每一组记录的最小 ID 值。然后,再使用 INNER JOIN 语句来进一步筛选出要删除的记录。最后,通过 DELETE 语句来删除这些记录。
WITH和DELETE ,完整的删除语句要怎么写?
本回答被提问者采纳