Sql 选择唯一记录并插入到另一个表中,以避免重复记录

Sql 选择唯一记录并插入到另一个表中,以避免重复记录,sql,tsql,sql-server-2012,Sql,Tsql,Sql Server 2012,我有两个表(userfrom和userto) 我想将“userfrom”表中的数据插入到“userto”表中,并想在两列上实现条件,即“username”和“date” 基本上,我将数据从“userfrom”粘贴到表“userto” 插入前的条件为 不应插入具有相同“日期”的相同“用户名”。 用户名可以相同,但日期应该不同 两个表之间只有用户名相同 请注意:(重新运行插入查询时,我不希望重复相同的数据。此插入查询在30分钟内运行5次) 表userfrom: 1 sampleusername 2

我有两个表(userfrom和userto)

我想将“userfrom”表中的数据插入到“userto”表中,并想在两列上实现条件,即“username”和“date”

基本上,我将数据从“userfrom”粘贴到表“userto”

插入前的条件为

不应插入具有相同“日期”的相同“用户名”。 用户名可以相同,但日期应该不同

两个表之间只有用户名相同

请注意:(重新运行插入查询时,我不希望重复相同的数据。此插入查询在30分钟内运行5次) 表
userfrom

1 sampleusername  2017-12-04
2 sampleusername  2017-12-04
3 sampleusername2 2017-12-04
4 sampleusername  2017-12-05
usertto

1 sampleusername  2017-12-04
2 sampleusername2 2017-12-04
3 sampleusername  2017-12-05

您可以在sql server中使用和,如下所示:

insert into userto (username, date)
select distinct username, date from userfrom uf
where 
not exists(select 1 from userto where username=uf.username and date=uf.date)

您可以
LEFT JOIN
这两个表,然后只插入userfrom中不存在于userto表中的值,如下所示:

INSERT INTO userTo
    (
        username
        ,userDate
    )
SELECT DISTINCT f.username
      ,f.userDate
FROM usertrom f
LEFT JOIN userto t ON f.username = t.username AND f.userDate = t.userDate
WHERE t.id IS NULL

在版本之前/之后添加一些示例表数据。同时向我们展示您当前的查询尝试。表用户from 1 sampleusername 2017-12-04 2 sampleusername 2017-12-04 3 sampleusername 2 2017-12-04表用户to 1 sampleusername 2017-12-04 2 sampleusername 2 2017-12-04请使用您的注释编辑您的问题,以便可以使用示例数据集正确格式化。刚才请检查以下事实:您没有包括当前的查询尝试,这使得您在来这里寻求帮助之前似乎没有在这方面做太多工作。为什么在没有使用聚合函数时按分组?我使用它作为替代方法,因为您已经使用了
distinct
,在这种情况下,两者都会产生相同的结果。