订单在theta加入中是否重要

时间:2014-10-11 19:36:53

标签: sql join

我有三个关系

  • customer(customer_name,city)
  • 贷款(loan_number,branch_name,金额)
  • 借款人(customer_name,loan_number)

查找客户名称,城市及其贷款金额。

首先查询:

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)

这两个查询会产生相同的结果吗?

2 个答案:

答案 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,订单不再重要