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)
当我从许多用逗号分隔的表格中 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)