MYSQL - 即使行没有加入,也选择行

时间:2017-06-27 08:19:53

标签: mysql sql join foreign-keys

我正在尝试查找一个返回所有人的查询,包括他们所属的公司以及尚未分配任何人员的公司。

公司

cid | cname
--------------
1     Company 1
2     Company 2

pid | pname     | fk_company
---------------------------
1     Person 1    1
2     Person 2    1

期望的结果

pid | pname    | fk_company | cid | cname     
----------------------------------------------
1     Person 1   1            1     Company 1
2     Person 2   1            1     Company 1 
NULL  NULL       NULL         2     Company 2

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您想要两个表中的所有内容,无论左右匹配,您都需要一个完整的联接:

SELECT    * 
FROM      person 
FULL JOIN company 
       ON person.fk_company = company.cid

编辑:显然mysql不支持FULL JOIN。您必须手动执行LEFT JOINSUNION ALL

答案 1 :(得分:0)

你应该提一下你尝试过的东西。无论如何,我将解释这个方法,以便你可以解决它。

SELECT <column_names>FROM <table1_name> LEFT JOIN <table2_name>ON 
<table1.column_name> = <table2.column_name>;

有关详细说明,请参阅此链接。 SQL Left Join