SQL检查每个表中是否存在重复的用户ID
我正在尝试形成一个sql语句,该语句检查表1和表2中的重复用户ID(通过将表1和表2连接在一起发现的重复用户ID不应被记录。) 以下是我的表格信息和我实施的当前检查: 表1:用户名,用户名 表2:用户ID,状态 表3:用户名,用户名,问题 目前,我只有3条SELECT语句完成上述3项检查,并将结果插入表3:SQL检查每个表中是否存在重复的用户ID,sql,Sql,我正在尝试形成一个sql语句,该语句检查表1和表2中的重复用户ID(通过将表1和表2连接在一起发现的重复用户ID不应被记录。) 以下是我的表格信息和我实施的当前检查: 表1:用户名,用户名 表2:用户ID,状态 表3:用户名,用户名,问题 目前,我只有3条SELECT语句完成上述3项检查,并将结果插入表3: 1. Insert in to Table3(userid,issue) SELECT t1.userid,'check no.1' FROM ta
1.
Insert in to Table3(userid,issue)
SELECT t1.userid,'check no.1'
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
where t1.userid not null and t2.userid is null
2.
Insert in to Table3(userid,issue)
SELECT t1.userid,'check no.2'
FROM table1 t1
inner JOIN table2 t2 ON t1.userid = t2.userid
where t2.status = 'DELETE'
3.
Insert in to Table3(userid,issue)
SELECT t2.userid,'check no.3'
FROM table2 t2
right outer JOIN table2 t2 ON t1.userid = t2.userid
where t2.status <> 'DELETE' and t1.userid is null
1。
插入表3(用户ID,问题)
选择t1.userid,'check no.1'
来自表1 t1
t1.userid=t2.userid上的完整外部联接表2 t2
其中t1.userid不为null,t2.userid为null
2.
插入表3(用户ID,问题)
选择t1.userid,'check no.2'
来自表1 t1
t1.userid=t2.userid上的内部联接表2 t2
其中t2.status='DELETE'
3.
插入表3(用户ID,问题)
选择t2.userid,'check no.3'
来自表2 t2
t1.userid=t2.userid上的右外部联接表2 t2
其中t2.status“DELETE”和t1.userid为null
现在,我需要一个第四个sql查询,它检查表1和表2中是否存在重复的用户ID,而不是将两个表一起比较,而是将每个表分别比较
如果发现任何重复项,请将记录插入表3,并使用
问题=“在表1中找到重复的用户ID”,以及
问题=“在表2中找到重复的用户ID”
谢谢大家。从你们的问题中,答案应该是:
insert into table3(userid,issue)
select t2.userid, 'dup user id'from table1 t1 join table2 t2
where t1.userid = t2.userid
但是,我不确定您是否要归档其他内容。听起来您的第四个查询应该与第二个查询非常相似,只是没有“where”子句-这对您不起作用吗?在我看来,您需要在单个表中找到重复的用户ID,例如,在表1中有两个值为1的用户ID?这些查询是可能的,但这种约束最好用主键/唯一索引来解决。嗨,Jon Skeet,我发现一个sql查询,它只在每个表1和表2中发现重复记录时才插入记录。因此,问题将是“在表1中找到重复记录”和“在表2中找到重复记录”。感谢youHi SWeko,因为我正在将2张excel工作表导入数据库,如果我将主键设置为数据库,则如果存在任何重复项,则导入的记录将不准确。因此,如果在每个表中都发现了重复的用户ID,我需要对这两个表进行检查。
groupbyuserid
和使用COUNT(*)>1进行重复检测有什么问题?它本身在一个表上运行良好,如果您想在两个表内进行比较,请先将所有表合并。如果我的问题不够清楚,请原谅。我发现一个sql查询,只有在每个表1和表2本身中发现重复记录时,才会将记录插入。因此,问题将是“在表1中找到重复记录”和“在表2中找到重复记录”。您有主键吗?您使用的数据库是什么?SQL Server。我无法设置主键,因为这些表1和表2假定包含外部excel数据,我将检查每个表中是否有重复的用户ID。如果设置主键,则在将excel数据导入数据库时可能会收到错误?同时todda.speat.会发布一条同样有效的注释。插入到表3(userid,issue)中选择t1.userid,“dup user table1”从表1 t1组中按userid进行计数(*)>1如果您有pk,您可以进行自连接,但是计数可能更优雅。