0

我正在尝试将人员加入到衬衫表中,结果显示所有人员和衬衫都是蓝色的。

这是我的人:

ID  NAME
1   Antonio Paz
2   Lilliana Angelovska
3   Michael SpringRoll
4   Poor dude

和衬衫:

ID  STYLE   COLOR   OWNER
1   polo    blue    1
2   dress   white   1
3   tshirt  blue    1
4   dress   orange  2
5   polo    red     2
6   dress   blue    2
7   tshirt  white   2
8   dress   orange  3
9   polo    red     3
10  dress   red     3
11  tshirt  white   3

我正在做左外连接,其中包括所有人和所有衬衫:

SELECT p.name,s.style,s.color FROM person p LEFT OUTER JOIN shirt s
   ON s.owner = p.id

NAME                    STYLE   COLOR
Antonio Paz             polo    blue
Antonio Paz             dress   white
Antonio Paz             t-shirt blue
Lilliana Angelovska     dress   orange
Lilliana Angelovska     polo    red
Lilliana Angelovska     dress   blue
Lilliana Angelovska     t-shirt white
Michael SpringRoll      dress   orange
Michael SpringRoll      polo    red
Michael SpringRoll      dress   red
Michael SpringRoll      t-shirt white
Poor dude               (null)  (null)

如何限制查询以便只显示蓝色衬衫但还包括空行的人,以便结果如下所示:

NAME                    STYLE   COLOR
Antonio Paz             polo    blue
Antonio Paz             t-shirt blue
Lilliana Angelovska     dress   blue
Michael SpringRoll      (null)  (null)
Poor dude               (null)  (null)

你可以在这里运行我的例子: http ://sqlfiddle.com/#!2/1f440/1/0

非常感谢您的帮助!

4

1 回答 1

2

使其成为 LEFT JOIN 而不是 INNER JOIN

在 ON 中包含 s.color = 'blue',而不是在 WHERE 之后

IE

SELECT p.name,s.style FROM person p LEFT JOIN shirt s
   ON s.owner = p.id AND s.color = 'blue'; 
于 2014-08-20T04:09:47.140 回答