如果有的话,以下之间有什么区别?
FROM table1
LEFT JOIN table2 ON table1.key = table2.key
LEFT JOIN table3 ON table2.key = table3.key
和:
FROM table1
LEFT JOIN table2
LEFT JOIN table3
ON table2.key = table3.key
ON table1.key = table2.key
结果似乎是一样的。
由于有评论和答案说第二种语法无效,我会澄清一下——SQL Server、PostgreSQL 和 MySQL 都可以接受这两种变体。我还使用一个平台,该平台拥有自己的 TSQL 实现,该平台将自己的实现转换为它实际连接的提供者之一,第二个变体是默认情况下它如何从可视化编辑器编写代码。
在第一个答案之后,我决定添加一个更复杂的第二种类型的示例:
SELECT table1.Name AS MainData, table3ParentParent.Name AS AdditionalData
FROM table1
LEFT JOIN table2
JOIN table3
JOIN table3 AS table3Parent
JOIN table3 AS table3ParentParent
ON table3Parent.Parent = table3ParentParent.key
ON table3.Parent = table3Parent.key
ON table2.table3_id = table3.key
ON table1.table2_id = table2.key
我已经将表的名称更改为无意义的,因为真实的表是俄语的,无论如何也不会告诉你任何事情,但这是我现在正在处理的查询的一部分。另外,我想指出,我不是在询问优化查询的建议,如果有人发现它不是最理想的,我希望了解语法是否存在实际差异,或者只是表面上的差异。