读完后,这是Explicit vs Implicit SQL Joins的复制品.


两者的区别是什么?各自应该包含哪些内容?

如果我正确理解了这个理论,那么查询优化器应该能够交替使用这两种方法.

推荐答案

它们不是一回事.

考虑这些查询:

SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID
WHERE Orders.ID = 12345

SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID 
    AND Orders.ID = 12345

The first will return an order 和 its lines, if any, for order number 12345. The second will return all orders, but only order 12345 will have any lines associated with it.

如果分数为INNER JOIN,则这些条款相当于effectively.然而,仅仅因为它们在功能上是相同的,即它们产生相同的结果,并不意味着这两类从句具有相同的语义.

Sql相关问答推荐

如何用前一个非空值替换空值?

SUM(条件)在Oracle?

为什么postgres中CURRENT_TIMESTAMP的日期与CURRENT_DATE不同?

retrofit AWS Athena中的JSON

Oracle SQL根据列中的条件 Select 最大记录数

在Oracle SQL中将列值转换为行

两个不同星期的销售额,不加成一行

如何计算给定日期前三个月的值以及月初数据?

将FLOAT转换为VARBINARY,然后再转换回FLOAT

同时插入和更新记录

SQL JSON_QUERY 使用列中的值构造 json 路径并接收错误

在 PostgreSQL 中使用 ltree 列进行累积

SQL 如何根据当前事件和下一个事件确定操作的持续时间?

使用其他表 SUM 的交换价格转换价格并获得 AVG

在 SQL 中使用循环遍历按时间顺序排列的数据

我需要遍历权重值表并确定每个权重是否有效

如何在 PL/SQL 中区分返回的 XML 值?

并非所有变量都绑定在 PL SQL 函数中

SQL 计数和过滤查询优化

在 Microsoft SQL Server 中,如何只为特定值保留不同的行?