Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL检查每个表中是否存在重复的用户ID_Sql - Fatal编程技术网

SQL检查每个表中是否存在重复的用户ID

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

我正在尝试形成一个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 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,您可以进行自连接,但是计数可能更优雅。