我正在用PHP编写一个工具脚本,我用MYSQL说明了一个情况。我有两个表需要结合才能得到我想要的结果。
我想出了这个:
SELECT * FROM names, dogs WHERE dog_id = dogs.id;
但是当我这样做时,结果不包括dog_id = NULL的行。我也需要这些结果。
TABLE NAMES
| *id* | *name* | *dog_id* |
| 1 | name1 | NULL |
| 2 | name2 | 1 |
| 3 | name3 | NULL |
| 4 | name4 | 2 |
TABLE DOGS
| *id* | *dog* |
| 1 | dog1 |
| 2 | dog2 |
如何获得这些结果:
RESULTS
| *id* | *name* | *dog_id* | *dog* |
| 1 | name1 | NULL | NULL |
| 2 | name2 | 1 | dog1 |
| 3 | name3 | NULL | NULL |
| 4 | name4 | 2 | dog2 |
答案 0 :(得分:2)
使用外部联接:
SELECT names.id, names.name, names.dog_id, dogs.dog
FROM names
LEFT JOIN dogs
ON dog_id = dogs.id;