我有两张桌子。
t1
id name
1 foo
2 bar
t2
tid id address
1 1 foss
我可以执行select satement从两个表中的t1中选择id 1。
select * from t1 inner join t2 on (t1.id = 1 and t2.id = 1)
但是,我真正想要的是从t1选择bar,并且只有bar,即使它不存在于t2中。
上面的表格类似于我在项目中所做的工作,类似于同样的问题。
这是我尝试过的。
1. I used left join t1.id = 2 and t2.id = 2
它列出了t1的所有值,我只想要t1.id = 2。
2.inner join could be used, but since t2.id = 2 is not present.
因此,它不会返回任何内容。
但是如果两个表中都存在id,那么我想要显示来自t1和t2的数据,如果不是仅显示那个id的表t1。
所以,如果我想显示t1.id = 2,我希望答案是使用
select * from t1 join .....
id name tid id address
2 bar null null null
答案 0 :(得分:1)
根据您的预期结果,这是一个简单的左连接:
select *
from t1 left join t2
on t1.id = t2.id
where t1.id = 2
答案 1 :(得分:0)
使用left join
获取t1的所有元素,即使不存在具有相同id的t2元素也是如此。
然后当t2不存在时,使用null
仅获取t1。
最后,您可以添加where过滤器以获取t1的子集(即:id = 2)
SELECT t1.*, t2.*
FROM t1
LEFT JOIN t2
ON t1.id = t2.id
WHERE t2.id IS NULL
AND t1.id = 2;