我有一个场景,其中我有5个不同列的表。
如果我加入Table1
和table2
,我会收到结果A
并加入table3
,table4
,table5
我会得到结果{{1 }}
我需要将结果B
与结果A
进行比较,并显示结果B
不在结果A
我试过了:
B
但这并没有给我预期的结果。我尝试使用不存在而且我不能做不存在。
我可以为此获得任何帮助。
我尝试了以下修改建议的查询,但我仍然无法满足我的要求
SELECT X*
FROM
(SELECT ..
FROM table1
JOIN TABLE 2)X
LEFT JOIN
(SELECT ...
FROM TABLE 3
JOIN 4
JOIN 5) Y ON x.=y.
WHERE x.Z=''
根据我的要求,我只需要显示Y中不存在的那些结果。
但上面的当前查询的工作原理如下, 显示来自X的所有结果,即使Y中有0个结果。
我不确定我哪里出错了。
答案 0 :(得分:4)
从A中排除B的一般方法是
SELECT * FROM A LEFT JOIN B on A.ID = B.ID WHERE B.ID IS NULL
在你的情况下,它应该是
select x*
from
(select ..
from table1
join table 2)X
left join
(select ...
from table 3
join 4
join 5) y on x.COLUMN=y.COLUMN
where x.Z='' and y.COLUMN IS NULL
更新: 如果某些条件为真,则一般方法从A获取所有行:
SELECT * FROM A WHERE your_condition
在你的情况下,它应该是
select x*
from
(select ..
from table1
join table 2)X
left join
(select ...
from table 3
join 4
join 5) y on x.COLUMN=y.COLUMN
where x.Z='' and y.COLUMN IS NULL
and (select count(*) from Y) > 0