Oracle SQL "from" 语法

Oracle SQL "from" syntax

当我从许多用逗号分隔的表格中 select 时,这意味着什么?

select * from table1,table2,table3

和left join或者其他的join一样吗?如果我没有指定任何要加入的 ID,它怎么知道如何加入?

这是 Oracle 的遗留 comma-join 语法。 ANSI/ISO 等价于 CROSS JOIN:

SELECT *
FROM   table1
       CROSS JOIN table2
       CROSS JOIN table3

但是,如果您有 WHERE 子句,那么可能会有更合适的连接条件。例如:

SELECT *
FROM   table1,table2,table3
WHERE  table1.id = table2.id
AND    table2.id = table3.id (+)

转换为:

SELECT *
FROM   table1
       INNER JOIN table2 ON (table1.id = table2.id)
       LEFT OUTER JOIN table3 ON (table2.id = table3.id)