我有两张桌子可以说
Table A
列 id , name address
Table B
列 id , age, import_date
Table B id
是Table A.
现在我想从A & B b
ut返回结果如果记录不在B中我仍然想看到记录所以我使用左外连接
Select * from A a left join B b
on a.id = b.id
现在即使我没有在B中有记录,我仍然可以获得记录。
表B可能包含重复的ID但是唯一的import_date。
现在我想要的结果是,如果表B中存在重复的ID,那么我只想获取我今天mport_date
所在的记录。
我仍然希望得到不存在的ID的记录,但如果表B中有ID,那么我想申请上述条件。
我希望有人能帮助我。
示例数据
Table A
01|John|London
02|Matt|Glasgow
03|Rodger|Paris
Table B
02|22|31-AUG-2015
02|21|30-AUG-2015
02|23|29-AUG-2015
查询将返回
01|John|London|null|null|null
02|Matt|Glasgow|22|31-Aug-2015
03|Rodger|Paris|null|null
答案 0 :(得分:1)
你几乎得到了解决方案。只需再添加一个条件,如下面的
Select a.id,a.name,a.address,b.age,b.import_date
from tablea a left join tableb b
on a.id=b.id and b.import_date=trunc(sysdate)
order by a.id;---This line optional
答案 1 :(得分:0)
SELECT *
FROM Table_A t1 LEFT OUTER JOIN Table_B t2 ON t1.id=t2.id UNION
SELECT *
FROM Table_A t1 LEFT OUTER JOIN Table_B t2 ON t1.id=t2.id
GROUP BY t2.import_date
HAVING t2.import_date=CURDATE();