我可以为您翻译此文本。这是关于编程的内容,需要删除表中的重复记录。语法:T-SQL(MS SQL Server)。
有两个困难:
1. 有包含不应影响行比较的数据字段。 2. 还有一个与第一个表相关联的附加表,具有“一对多”的关系。
例如:
因此,表A中的任何记录都包含字段AId、A1、A2、A3、A4和A5,以及“子记录”列表:表B中与B.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的记录完全匹配所有AID == Y.AId的记录,但排除(忽略)B8和B9字段
我至少需要获取这些重复记录的AIds,最多删除这些重复记录,但只保留一份记录副本(无论哪一个都可以)。
请告诉我是否需要以下澄清。谢谢。
有两个困难:
1. 有包含不应影响行比较的数据字段。 2. 还有一个与第一个表相关联的附加表,具有“一对多”的关系。
例如:
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包含交易的属性,例如日期/时间或客户ID,而表B可以表示具有其价格和数量的商品列表。
有些记录重复了。它们具有不同的AId、不同的BId、不同的A4、A5、B8和B9。为使两个记录成为重复记录,所有其他字段都应匹配。
因此,如果满足以下条件,则来自A的两个记录X和Y被视为重复记录:
- X.A1 == Y.A1 - X.A2 == Y.A2 - 表B中所有AId == X.AId的记录完全匹配所有AID == Y.AId的记录,但排除(忽略)B8和B9字段
我至少需要获取这些重复记录的AIds,最多删除这些重复记录,但只保留一份记录副本(无论哪一个都可以)。
请告诉我是否需要以下澄清。谢谢。
更新: SQL Fiddle: http://sqlfiddle.com/#!3/898c8/1