[英]SQL LEFT JOIN & RIGHT JOIN — WHICH TABLE IS LEFT OR RIGHT?
我在 sql 中搜索左连接和右连接。 并且解释说左连接开始从左表中选择数据。 它将 x 列中的值与右表中 y 列中的值进行比较。 下面有 2 个查询使用左/右连接。
这个产品是哪家公司生产的? (查询1)
如果我们想用左连接回答这个查询。那么左表是产品,右表是公司。
这家公司生产什么产品? (查询 2)
如果我们想用右连接来回答这个查询。那么左表是公司,右表是产品。
我对上述查询进行了解释。我不确定它是否属实。 有一个“产品”表,该表包括“Pname”、“Product_no”、“Cname”、“Company_no”列。
Query 1
SELECT P."Pname" AS "Product_name",
C."Cname" AS "Company_name"
FROM "Products" AS P
LEFT JOIN "Products" AS C
ON P."Company_no" = C."Product_no"
Query 2
SELECT C."Cname" AS "Company_name",
P."Pname" AS "Product_name"
FROM "Products" AS P
RIGHT JOIN "Products" AS C
ON P."Company_no" = C."Product_no"
我的问题是:
我们如何确定两张表中的哪一张是左表或右表?
在同一张表上进行左连接/右连接时,我们如何确定哪个是左表或右表? (自我加入——在查询 1 和查询 2 中)
左连接和右连接之间的确切区别是什么?
谢谢...
“左”和“右”在这里基本上意味着“第一个”和“第二个”:想象一下在一行中编写您的 SQL 查询,您提到的第一个表将在左侧,下一个在其右侧。 左连接表示左边的表是强制性的,右边的表是可选的,右连接表示相反。
顺序实际上对最终结果没有影响:任何可以用右连接编写的查询都可以用左连接来编写,而不是通过以不同的顺序提及表(可能有例外,但我我从来没有遇到过)。
在实践中,您几乎总是使用左连接,因为如果您先放置必填表,然后放置可选表,通常更容易遵循。
最后,您的示例没有多大意义: P."Company_no" = C."Product_no"
将匹配彼此不相关的事物。 如果您有“父子”关系,例如“OwnedByCompanyNo”,则您将表连接到自身的主要时间。 然后,您可能有一个左连接,其中左(强制)表是特定城镇中的所有公司,而右(可选)表是拥有它们的公司,如果有的话。 同样,将其翻转为右连接只是以其他顺序提及表的情况。
左加入“产品”为 C ON P."Company_no" = C."Product_no"
重要的东西是:“C ON P”左边是C,右边是P
Left Join: C ON P (C Joins on P) 与 Right Join: P ON C (C Joins on P) 相同
不同之处在于 JOIN 的方向。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.