Sql 选择唯一记录并插入到另一个表中,以避免重复记录
我有两个表(userfrom和userto) 我想将“userfrom”表中的数据插入到“userto”表中,并想在两列上实现条件,即“username”和“date” 基本上,我将数据从“userfrom”粘贴到表“userto” 插入前的条件为 不应插入具有相同“日期”的相同“用户名”。 用户名可以相同,但日期应该不同 两个表之间只有用户名相同 请注意:(重新运行插入查询时,我不希望重复相同的数据。此插入查询在30分钟内运行5次) 表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
:
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
,在这种情况下,两者都会产生相同的结果。