2

我正在用 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  |
4

1 回答 1

2

使用外连接:

SELECT names.id, names.name, names.dog_id, dogs.dog
FROM names
LEFT JOIN dogs
ON dog_id = dogs.id;
于 2012-08-28T22:46:53.533 回答