列出所有行尽管加入

时间:2014-06-26 09:40:39

标签: mysql sql

我不明白为什么我的尝试不起作用。

我有两张桌子

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

需要的是加入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

但显然,这不是一个好的解决方案。 有人有想法吗? 谢谢。

2 个答案:

答案 0 :(得分:3)

如果在WHERE子句中的LEFT JOINed表上添加条件,就好像在做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

答案 1 :(得分:3)

试试这个。

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