我不明白为什么我所做的不起作用。
我有两张桌子

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

但显然,这不是个好办法。
有人有主意吗?
谢谢。

最佳答案

如果在WHERE子句中的左联接表上添加条件,这就如同在WHERE执行内部联接一样。
将该条件添加到左连接

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

关于mysql - 列出所有行,尽管加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24427170/

10-13 09:50