我需要从表中删除重复记录。语法:T-SQL (MS SQL Server)
它有两个困难:
- 有些字段包含不应影响行比较的数据
- 有一个附加表与第一个具有“一对多”关系的表链接
例子:
Table A Table B
-------------- --------------
AId - int <-\ BId - int
A1 - int \-> AId - int
A2 - varchar B6 - varchar
A3 - varchar B7 - varchar
A4 - varchar B8 - varchar
A5 - int B9 - int
因此,表 A 中的任何记录都包含字段 AId、A1、A2、A3、A4 和 A5,以及“子记录”列表:表 B 中 B.AId 与 A.AId 匹配的记录列表。例如,它可以是采购交易列表,其中表 A 包含交易的属性,例如日期/时间或客户 ID,而表 B 可以表示商品及其价格和金额的列表。
一旦一些记录被复制。它们有不同的 AId、不同的 BId、不同的 A4、A5、B8 和 B9。所有其他字段应匹配以使两条记录重复。
因此,如果满足以下条件,则 A 中的两条记录 X 和 Y 被认为是重复的:
- X.A1 == Y.A1
- X.A2 == Y.A2
- 表 B 中 AId == X.AId 的所有记录与 B 中 AID == Y.AId 的所有记录完全匹配,但不包括(忽略)B8 和 B9 字段
我至少需要获取此类重复记录的 AID,最多删除这些重复记录但只留下一份记录副本(不管是哪一份)。
请告诉我是否需要以下说明。先感谢您。
更新: SQL 小提琴:http ://sqlfiddle.com/#!3/898c8/1