我有2张桌子(A和B)。表A上的每一行在表B上最多有3个对应关系。表B有一个状态字段,可以是" x" " Y"或" null"。
我想得到表A中的所有行,其中表B中没有匹配的行具有" X"状态(见下图)。所以基本上我想要Id 2和3的行。
请注意,我的声明必须在表A中。
到目前为止,我没有成功尝试以下内容:
select *
from table A
left join table B on a.Id = b.ref
where status = 'Y'
or status is null;
select *
from table A
right join table B on a.Id = b.ref
where status = 'Y'
or status is null;
问题是,对于表A中的每一行,我在表B中有一行满足where条件,因此我返回所有3行而不是只返回绿色的行。我需要做类似于"表B中所有匹配的行!=" X"
答案 0 :(得分:2)
您的想法是尝试将表A中的行与表B上的任何人匹配,但只匹配其上有x
的行。
如果你不能得到NULL
,那就是你想要的行。
SELECT A.*
FROM TableA as A
LEFT JOIN TableB as B
ON A.id = B.Ref
AND B.status = 'x'
WHERE B.status is null
答案 1 :(得分:1)
Array.find()