[mysql]列出所有行尽管联接

标签: sql MySQL
发布时间: 2017/1/9 21:59:59
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我不明白为什么我想不起作用。

我有两个表

Table1
id_tb1    |  tb1field
1            aaa
2            bbb
3            ccc
4            ddd
5            eee

Table2
id_stuff  | id_tb1
1           1   
1           4
1           5
2           1
3           1

什么 id 需要的是加入 tb1,tb2 但还列出 tb1 中的所有记录。就像这个样子︰

Result
id_tb1    |  tb1field  | tb2.id_stuff
1            aaa         1
2            bbb         NULL
3            ccc         NULL
4            ddd         1
5            eee         1

所以我这样做︰

SELECT t1.*, t2.id_stuff
FROM Table1 t1
LEFT JOIN Table2 t2 ON t2.id_tb1 = t1.id_tb1
WHERE t2.id_stuff = 1

但显然,它不是很好的解决方案。 有人知道吗? 谢谢。

解决方法 1:

如果你在 where 子句中加入了左表上添加一个条件,这就好像你在哪里做 INNER JOIN。

将该条件添加到左联接

SELECT t1.*, t2.id_stuff
FROM Table1 t1
LEFT JOIN Table2 t2 ON t2.id_tb1 = t1.id_tb1 and t2.id_stuff = 1
赞助商