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