我有三个关系
查找客户名称,城市及其贷款金额。
首先查询:
SELECT c.customer_name, c.city, l.amount
FROM borrower b
JOIN loan l USING (loan_number)
JOIN customer c USING (customer_name)
第二次查询:
SELECT c.customer_name, c.city, l.amount
FROM customer c
JOIN borrower b USING (customer_name)
JOIN loan l USING (loan_number)
这两个查询会产生相同的结果吗?
答案 0 :(得分:3)
在内部联接中(与外部联接相对),表的顺序无关紧要。
答案 1 :(得分:2)
简答:否。订单对于INNER JOIN并不重要(因此对于theta join)。
长答案: 两个或多个表之间的INNER JOIN(或简称JOIN)为您提供表格的交集。将表视为集合,表格的交集是数据重叠的集合的公共区域。无论您放置哪些集合,集合A,集合B和集合C(表A,表格B和表格C)之间的共同点都不会发生变化。因此,表的顺序对于INNER JOIN并不重要。
当你在两个表(两个集)之间进行LEFT OUTER JOIN时,你不仅仅是两个集合的交集。您实际上是在放置在左侧的整个集合(表格)。同样,对于RIGHT OUTER JOIN,您将获取放置在右侧的整个集合(表格)。因此,对于LEFT和RIGHT OUTER JOIN,表的顺序确实重要。
对于FULL OUTER JOIN,您实际上不仅仅是在交叉点,而不仅仅是左侧或右侧的表格,而是整个两个表格(或集合)。因此,对于FULL OUTER JOIN,订单不再重要
。