sql - SQL:使用临时表和一列的 JOIN 问题
问题描述
我创建了两个临时表,其中 TABLE1 包含所有项目,而 TABLE2 仅包含 TABLE1 的部分列表。我怎样才能找出表 1 有哪些表 2 没有的部分,反之亦然?请记住,由于 DISTINCT 语句,临时表只有一列。
我确实必须使用联接,但我的想法是,如果我在每个表的各个列上加入,然后在 Where 子句中声明例如第 1 列不等于第 2 列,这是矛盾的。
IF EXISTS (
SELECT *
FROM tempdb.dbo.sysobjects
WHERE id = Object_id(N'tempdb..#TABLE1')
)
BEGIN
DROP TABLE #TABLE1
END
IF EXISTS (
SELECT *
FROM tempdb.dbo.sysobjects
WHERE id = Object_id(N'tempdb..#TABLE2')
)
BEGIN
DROP TABLE #TABLE2
END
------------------------------------------------
select distinct 1.parts as #TABLE1 from List1 1 --- MAIN LIST
select distinct 2.parts as #TABLE2 from List2 2 --- ADDITIONAL LIST
select *
from #TABLE2 left join
#TABLE1
on 2.parts = 1.parts
where 2.parts <> 1.parts
解决方案
您的where
子句正在撤消left join
. 我会推荐not exists
:
select t1.*
from #table1 t1
where not exists (select 1 from #table2 t2 where t2.parts = t1.parts);
推荐阅读
- corda - 集成测试期间无法解析匿名方
- css - Angular mat 卡不会包装 ngx-charts 元素
- c# - 当我在 C# 中的 switch-case 中时,如何打破“while”循环?
- vue.js - Vue v3 预期的 'v-bind:key' 指令使用由 'v-for' 指令定义的变量
- c# - asp.net core 3.1 写入响应正文对于状态码为 204 的响应无效
- python - 使用 Gekko 进行整数优化的问题
- html - GitHub Pages 图片添加到新页面时未加载
- visual-studio-code - 在资源管理器中拖放时停止打开文件
- python - 在vestacp, apache2, mod_wsgi, python web app (bottle framework)
- java - 我使用jackson库获得一行xml文件是否正常?