帮助MySQL加入

帮助MySQL加入,mysql,join,Mysql,Join,我有一个技能表,其中有14条记录。它的结构如下: | id | name | 然后我有一个User_Skills表,我想将其加入到Skills表中。 结构如下: |用户id |技能id | 基本上,我希望能够做一个连接,它总是会产生14条记录,并在用户没有关联的任何字段中显示NULL 通过这个查询,我几乎得到了想要的结果 代码: 编辑:为了更清楚-这是此查询的结果集。我需要按用户id选择技能,但即使结果在用户id字段中为空,仍会显示所有14项技能 id name User_id

我有一个技能表,其中有14条记录。它的结构如下:
| id | name |

然后我有一个User_Skills表,我想将其加入到Skills表中。 结构如下:
|用户id |技能id |

基本上,我希望能够做一个连接,它总是会产生14条记录,并在用户没有关联的任何字段中显示NULL

通过这个查询,我几乎得到了想要的结果 代码:

编辑:为了更清楚-这是此查询的结果集。我需要按用户id选择技能,但即使结果在用户id字段中为空,仍会显示所有14项技能

id  name    User_id     Skill_id
1   HGV1    1000    1
1   HGV1    1001    1
2   HGV2    1001    2
3   No.1 Mechanic   1000    3
3   No.1 Mechanic   1001    3
4   No.2 Mechanic   1001    4
5   Designer    1001    5
5   Designer    1000    5
6   Engineer    1000    6
7   Data Analysis   1001    7
7   Data Analysis   1000    7
8   Coaching/Inst.  1001    8
8   Coaching/Inst.  1000    8
9   Hospitality     1000    9
10  Promo Girl  1000    10
11  Public Relations    NULL    NULL
12  Photographer    NULL    NULL
13  Film Crew   1001    13
14  Physiotherapist     NULL    NULL
但它显示了我在用户技能表中的记录数量。。。即,重复技能名称,因为有多个用户与该技能关联

这一点也差不多做到了: 代码:

但这只显示了与用户相关联的技能,没有显示我想要的任何空条目

有人知道我如何实现这个查询吗

SELECT * FROM 
Skills LEFT OUTER JOIN 
(select distinct user_id, skill_id from User_Skills where user_id = 1001) xxx
    ON Skills.id = xxx.Skill_id 
这能满足你的需要吗


这能满足你的需要吗?

太棒了——它就像一个符咒!我是如此接近。。我用WHERE代替AND。我以前没见过左和外的接头。。相反,如果我从查询中删除OUTER,似乎会得到相同的结果。非常感谢你。。让我重操旧业!太棒了-它就像一个魅力!我是如此接近。。我用WHERE代替AND。我以前没见过左和外的接头。。相反,如果我从查询中删除OUTER,似乎会得到相同的结果。非常感谢你。。让我重操旧业!
SELECT * FROM Skills LEFT JOIN User_Skills ON Skills.id = User_Skills.Skill_id WHERE User_id = 1001
SELECT * FROM 
Skills LEFT OUTER JOIN 
(select distinct user_id, skill_id from User_Skills where user_id = 1001) xxx
    ON Skills.id = xxx.Skill_id