sql返回用户ID的唯一列表';它基于两个表
(不讨论桌子的设计,已经成交了!) 我知道如何使用WHERE NOT IN子句执行此查询,但我想知道如何使用join执行此查询。 注意:行不是唯一的,所以我们必须做一个独特的操作,以避免重复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)
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%接受评分。。。