【发布时间】:2019-05-05 03:29:33
【问题描述】:
我是 SQL Server 的新手,我正在尝试从表中删除重复项,但有一些条件,我的疑问是如何将这些条件应用于查询。
我需要从Users 表中删除重复项,例如:
Id Code Name SysName
-----------------------------
1 D1 N1
2 D1
3 D1 N1 N-1
4 E2 N2
5 E2 N2
6 E2 N2
7 X3
8 X3 N-3
9
10
11 Z4 W2 N-4-4
12 Z4 W2 N-44
在上表中:对于 D1 代码,我想保留 ID=3,其中填充了所有列(代码、名称和系统名称)并删除 ID=1 和 ID=2
对于 E2 代码,我想保留其中任何一个并删除两个重复的
对于 X3 代码,保留 SysName=N-3 的那个
对于 ID=9,ID=10(空代码且全部为空,全部删除)
对于 Z4 代码,删除 ID=11 并保留 N-44 Sysname
最后一件事,我有一个与其他表的 FK,所以我认为我需要首先从用户获取所有 Id,从第二个依赖表中删除这些 id,最后从用户表中删除。
您对如何实现它有任何想法吗?我不假装解决方案,而是你有类似的结构代码或示例/场景,任何建议对我来说都可以。
编辑:
恢复..我有用户表:
Id Code Name SysName
-----------------------------
1 D1 N1
2 D1
3 D1 N1 N-1
4 E2 N2
5 E2 N2
6 E2 N2
7 X3
8 X3 N-3
9
10
11 Z4 W2 N-4-4
12 Z4 W2 N-44
我只想保留:
Id Code Name SysName
-----------------------------
3 D1 N1 N-1
4 E2 N2
8 X3 N-3
12 Z4 W2 N-44
【问题讨论】:
-
能否编辑您的问题并添加预期结果?因为这将是很好的解释;)
-
完成,希望对您有所帮助,谢谢!!
-
因此,如果您有记录 11、12 的系统名称为 N-44 和 N-45,假设它们都具有 W2 名称,您将如何知道选择哪个?简单地说,如果 name 和 sysname 都被填充,你如何确定要保留哪条记录?或者如果一个是 W1,另一个是 W2...?
标签: sql sql-server duplicates sql-delete