首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从用户表中查找不在其他6个不同表中的记录

从用户表中查找不在其他6个不同表中的记录
EN

Stack Overflow用户
提问于 2014-07-30 20:56:07
回答 2查看 39关注 0票数 0

我想要编写一个T-SQL查询,在UserTableuserId不在其他六个表中的情况下从该表中剔除userId。在others表中,userIdPK of UserTableFK

哪种方法是解决这个问题的最好方法?

我是这样写的:

代码语言:javascript
运行
复制
select distinct userId ,Email,FName from
 (
    select user_id as userId,user_email as Email,user_firstname as FName from bb_user
    where user_id not in ( select user_id from bb_acquire_prvider)
    UNION ALL  
    select user_id as userId,user_email as Email,user_firstname as FName from bb_user
    where user_id not in ( select user_id from bb_sell_seek)

 ) as userId
 order by userId asc
EN

回答 2

Stack Overflow用户

发布于 2014-07-30 21:01:22

您可以选择以下方式之一:

Should I use NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT, or NOT EXISTS?

出于上面提到的原因,我更喜欢NOT EXISTS

代码语言:javascript
运行
复制
SELECT t1.id FROM Table1 t1
WHERE NOT EXISTS
(
    SELECT 1 FROM Table2 t2 WHERE t1.id = t2.id
)
AND NOT EXISTS
(
    SELECT 1 FROM Table3 t3 WHERE t1.id = t3.id
)
....
票数 1
EN

Stack Overflow用户

发布于 2014-07-30 21:08:31

EDIT -我想补充的是,这个解决方案只返回不存在于所有6个表中的id。所以我不确定这是你要找的,还是你不想让它返回这6个表中的任何一个。希望这是有意义的。

我使用了not exists,并在其他表上执行了join

代码语言:javascript
运行
复制
select * from table1 t1
where not exists
  (
    select * from table2 t2
    join table3 t3 on t2.userid = t3.userid
    join table4 t4 on t2.userid = t4.userid
    join table5 t5 on t2.userid = t5.userid
    join table6 t6 on t2.userid = t6.userid
    join table7 t7 on t2.userid = t7.userid
    where t1.userid = t2.userid
  )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25037411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档