加入什么时候使用?

时间:2012-01-07 16:10:17

标签: sql database sqlite join

我是所有这些sql语句的新手,我对连接概念的全部功能非常了解....

所以我有一个数字可以快速显示概念

enter image description here

这里我有两个表Table-A和Table-B

我只需要知道如何分别获得这三种颜色。

与sql语句类似,仅在蓝色区域中获取内容,但不在绿色区域中获取内容。

请帮我解决这些问题。

非常感谢你们......

3 个答案:

答案 0 :(得分:2)

如果有更多匹配项返回更多行,则

INNER JOIN在每个表中至少返回一个匹配项。

LEFT JOIN返回'left'表中的所有行(基本上是FROM语句中指定的行),无论是否匹配,如果没有匹配,则返回{{1}或类似的。

NULLRIGHT JOIN相反,因此返回“右”表中的所有行(基本上是在单词LEFT JOIN之后和JOIN之前指定的行)无论是否匹配,如果没有匹配,则返回ON或类似的匹配。

NULL就像FULL JOINLEFT JOIN一样,其中返回了两个表中的所有记录,它将显示来自两个表的匹配和非匹配记录

你的图表对我来说是诚实的是混淆了它的彩色圆圈而不是数据表,所以我无法将它与连接的概念相匹配但是......

假设你有表RIGHT JOIN包含有关颜色(id,name,rgb,hex)和包含人(id,name,age,favourite_colour)的表a的数据。 b字段包含表favourite_colour中记录(颜色)的id。您可以说表格a在上述字段中与表格b多对一关系。现在要获得(加入)表b中所有人喜欢的颜色,我们可以做类似

的事情
a

如果表SELECT a.*, b.* FROM a LEFT JOIN b ON b.id = a.favourite_colour; 中的某个人没有喜欢的颜色,那么会返回a,如果您使用了NULL,则只能获得喜欢颜色的人的记录,如果您有用户INNER JOIN,无论是否有人喜欢,您都可以获得所有颜色,如果您使用过RIGHT JOIN,那么您会看到所有人都喜欢的颜色匹配,所有人都没有匹配最喜欢的颜色和所有不喜欢的颜色。

希望这个帮助: - )

修改:在DOK对该问题的评论中阅读了link provided这些圈子是有道理的:)

答案 1 :(得分:1)

et blue和red是两个表

要检索绿色:

SELECT * FROM blue
INNER JOIN red
ON blue.name = red.name;

要检索蓝色:

SELECT * FROM blue
LEFT OUTER JOIN red
ON blue.name = red.name
WHERE red.id IS null;

要检索红色:

SELECT * FROM blue
LEFT OUTER JOIN red
ON blue.name =red.name
WHERE blue.id IS null

答案 2 :(得分:0)

让蓝色和红色成为两个表

检索绿色: select * from blue intersect select * from red;

检索蓝色; select * from blue减去select * from red;

检索红色; select * from red minus select * from blue;