Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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_Join - Fatal编程技术网

sql返回用户ID的唯一列表';它基于两个表

sql返回用户ID的唯一列表';它基于两个表,sql,join,Sql,Join,(不讨论桌子的设计,已经成交了!) 我知道如何使用WHERE NOT IN子句执行此查询,但我想知道如何使用join执行此查询。 注意:行不是唯一的,所以我们必须做一个独特的操作,以避免重复 Users (userID) OldUsers(UserID) 因此,使用WHERE NOT IN条款,我可以做到: SELECT DISTINCT(u.userID) FROM Users u WHERE u.userID NOT IN (SELECT o.userID FROM OldUsers o)

(不讨论桌子的设计,已经成交了!)

我知道如何使用WHERE NOT IN子句执行此查询,但我想知道如何使用join执行此查询。

注意:行不是唯一的,所以我们必须做一个独特的操作,以避免重复

Users (userID)
OldUsers(UserID)
因此,使用WHERE NOT IN条款,我可以做到:

SELECT DISTINCT(u.userID)
FROM Users u
WHERE u.userID NOT IN (SELECT o.userID FROM OldUsers o)

性能也是这里的一个关键。

您也可以使用
关键字外的其他关键字:

select distinct u.userID from Users u
left join OldUsers o on o.userId = u.userID
where o.userId is null
SELECT UserID FROM Users
EXCEPT
SELECT UserID FROM OldUsers

至于性能:您只需运行三个脚本(您自己的
不在
中,kragan的方法是
左连接
,这一个是
除了
)进行比较,然后自己测量速度,它们使用了多少资源等-->查看执行计划,查看IO统计信息-常用的东西…

您也可以使用
除了
关键字以外的其他关键字来执行此操作:

SELECT UserID FROM Users
EXCEPT
SELECT UserID FROM OldUsers

至于性能:您只需运行三个脚本(您自己的
不在
中,kragan的方法是
左连接
,这一个是
除了
)进行比较,然后自己测量速度,它们使用了多少资源等-->查看执行计划,查看IO统计信息-常用信息…

您还可以使用相关子查询,并且
存在

SELECT DISTINCT(u.userID)
FROM Users u
WHERE NOT EXISTS (
     SELECT o.userID 
     FROM OldUsers o 
     WHERE o.UserID = u.userID)

如果这实际上更快,则取决于表的大小,因此这是marc_s建议的另一个版本。

您还可以使用相关子查询,并且
存在

SELECT DISTINCT(u.userID)
FROM Users u
WHERE NOT EXISTS (
     SELECT o.userID 
     FROM OldUsers o 
     WHERE o.UserID = u.userID)

如果这实际上更快取决于表格的大小,那么这是marc_s建议的另一个版本。

300个问题,33%接受评分…300个问题,33%接受评分。。。