我写了一个搜索查询,它将加入两个不同的表。我已经把左连接放在了两个上面。现在第一个表包含60个记录,而基于第二个表只有30个。现在我想如果我搜索查询应该返回所有60记录。现在它又回来了30。 查询相同。
选择A. ,B。从A左边的连接B上A.Id = B.AId其中 A.name = IfNull('tst',A.name)AND B.class = IFNull('c',B.class)。
请指导我,谢谢。
答案 0 :(得分:0)
明智的做法是记住JOIN操作(各种JOIN操作,LEFT,RIGHT,INNER,OUTER)的目的是创建一个由连接在一起的表组装而成的新的虚拟表。 / p>
这个JOINed虚拟表应该具有什么?在您的情况下,列A.ID和列B.AID的含义是什么?
如果对问题1的回答为“是”而问题2为“否”,那么LEFT JOIN将给出您想要的结果。但是简化您的查询。试试这个。
SELECT A.*, B.*
FROM A
LEFT JOIN B ON A.ID = B.AID
如果您只想要A中没有来自B的相应行的行,请尝试此操作。
SELECT A.*
FROM A
LEFT JOIN B ON A.ID = B.AID
WHERE B.AID IS NULL
如果两个问题的答案都是肯定的,那么可能想要这个:
SELECT A.*, B.*
FROM A
OUTER JOIN B ON A.ID = B.AID
但你应该仔细考虑这一点。
答案 1 :(得分:0)
试试这个逻辑我希望它对你有用.....
select A.*,B.* from A left join B on A.Id=B.AId where B.Id != ''