SQL插入,删除具有某些匹配信息和相同ID

时间:2019-07-19 03:57:30

标签: sql sql-server insert duplicates distinct

场景:我有一个客户订单主文件。我需要将一些列导入客户表(名称,地址等)并自动创建客户ID。然后将主文件中的其余列导入订单表(日期,代理商ID,以及新创建的客户ID)。 除...外,该过程运行正常。

我的问题是:有些行被两次输入,但有细微的差别。  例如:

       (name, phone, address, subscription number)
ROW 1: "John, Smith, 3232112111, 123 2nd St #4, 5shdm67h5" 
ROW 2: "JOHN, SMITH, 13232112111, 123 Second Street Apt. 4, 5shdm67h5". 

每行的最后一个值是它们的“订阅号”,这是唯一键。客户显然是相同的,但是两个条目输入的姓名,电话和地址的值不同。使用distinct,它将为John Smith的每一行创建两个客户ID。

我需要DISTINCT仅基于订阅号,而完全忽略其他列。每次尝试时,它只会为地址,电话号码等不匹配的客户插入重复的客户。因此,当插入订单时,它将为每个客户编号两次创建相同订单的列表,从技术上讲同一位客户。

尝试了DISTINCT(不存在)和ROW_NUMBER几种不同的组合,但是我得到的客户/订单数量错误,或者语法错误。

2 个答案:

答案 0 :(得分:1)

Collections.binarySearch(Lists.transform(animals, Animal::weight), searchWeight);

答案 1 :(得分:0)

最好提供插入此记录的查询。因为只需要避免重复输入即可。

您如何区分这2条记录是同一个人还是2个人。

如果这代表subscription number。然后,您应该尝试根据subscription number查找不同的记录,并将TOP 1记录填充到表中

  insert into [newtable] ( col1, col2, col3, col4 )
  select Top 1 col1, col2, col3, col4 from [sourcetable] where [subscription number]=@yourvalue