帮助MySQL加入

时间:2009-12-09 14:18:18

标签: mysql join

我有一个Skills表,里面有14条记录。它的结构如下:     | id | name |

然后我有一个User_Skills表,我想加入技能表。 这是结构:     | User_id | Skill_id |

基本上我希望能够进行一个总是产生14条记录的连接,并在用户未与之关联的任何字段中显示NULL。

我几乎得到了我想要的查询结果 代码:

SELECT * FROM Skills LEFT JOIN User_Skills ON Skills.id = User_Skills.Skill_id

编辑:更清楚 - 这是此查询的结果集。我需要通过User_id选择技能,但仍然显示所有14种技能,即使结果在User_id字段中为Null。

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

但它显示我在user_skills表中的记录数量...即,重复的技能名称,因为多个用户与该技能相关联。

这也几乎得到了: 代码:

SELECT * FROM Skills LEFT JOIN User_Skills ON Skills.id = User_Skills.Skill_id WHERE User_id = 1001

但这只显示了用户所关联的技能,并且没有显示我想要的任何NULL条目。

有谁知道如何实现此查询?

1 个答案:

答案 0 :(得分:1)

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 

这会产生你需要的东西吗?