sql - 这些连接之间的区别

标签 sql join

这个问题在这里已经有了答案:





Inner join vs Where

(19 个回答)


7年前关闭。




有什么区别吗

SELECT *
FROM TABLE_A a
JOIN TABLE_B b
  ON a.propertyA = b.propertyA        

和查询
SELECT * from TABLE_A a, TABLE_B b where a.propertyA=b.propertyA.

最佳答案

INNER JOIN是您在第一个语法中使用的 ANSI (SQL-92) 语法。它通常被认为更具可读性,尤其是当您加入大量表时。
WHERE syntax (SQL-89) 更面向关系模型。两个表 JOIN'ed 的结果是应用过滤器的表的笛卡尔乘积,该过滤器仅选择连接列匹配的那些行。

使用 WHERE 语法更容易看到这一点。

我宁愿去 ANSI输入 join 因为如果你知道如何省略 ON子句,如果省略 where 上的条件,则会生成错误,而旧类型的连接子句不会产生错误信息,因此会生成笛卡尔积。

关于sql - 这些连接之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12345965/

相关文章:

sql - 选择查询时选择大小写

sql - 对数据集中的唯一数字组进行递归CTE

mysql - 每天至少有 # 条合格行的所有行

mysql - 将所有查询结果分组到一行中

MySQL:使用条件连接改进查询

MySQL 根据优先级逻辑选择唯一记录

sql - 多个子选择连接到同一个表?

mysql - 带有连接查询的两个表中 mysql 中每个单独的 id 的计数

grails - 为什么这个带有 JOIN 的 Grails/HQL 查询返回域类对列表?

sql-server - SUM 和 JOIN 显示在一条记录中