在MySQL中连接两个具有不同行数的表

时间:2011-06-07 16:48:44

标签: mysql join rows

我有两张桌子:

---------
|dogs   |
---------
|item_1 |
|       |
|       |
|       |
---------

---------
|cats   |
---------
|item_1 |
|item_2 |
|item_3 |
|item_4 |
---------

所以我想加入这样的表:

------------------
|dogs   | cats   |
------------------
|item_1 | item1  |
|NULL   | item2  |
|NULL   | item3  |
|NULL   | item4  |
------------------

我在第二个表中使用了一个条件,但如果找不到任何内容,我仍然希望从第一个表中得到这样的结果:

------------------
|dogs   | cats   |
------------------
|item_1 | NULL   |
------------------

这些表没有ID字段,但我也可以添加一个ID来建立项目之间的关系。

我已经尝试了不同的解决方案,但是如果在使用条件(我得到0行)时在第二个表中找不到任何内容,我就无法保留第一个表中的单个结果,或者我重复了第1项我实际需要Null时的第一个表。

2 个答案:

答案 0 :(得分:1)

select *
from dogs left outer join cats

这会给你所有的狗和任何匹配的猫。这意味着Cat列可以为null,但是dog列不能。这是你在找什么?

答案 1 :(得分:0)

当您向两个表添加id时,您可以使用SQL left join来匹配右表和左表中的所有数据。

来自W3Schools:

  

LEFT JOIN关键字返回左表(table_name1)中的所有行,即使右表(table_name2)中没有匹配项也是如此。