您能解释一下我甚至指出Oracle SQL文档在哪里可以找到以下问题的解释:
考虑以下运行正常的查询:
Select * from DUAL join DUAL on DUAL.DUMMY='X';
我希望Oracle能够说出“不明确的表格参考”和#39; (或类似的东西),但它执行精细返回一行有两列。有什么想法吗?此外,删除列限定条件将导致列不明确定义'错误。
我使用Oracle SQL v.12.1
运行查询答案 0 :(得分:2)
Oracle中有许多特殊情况。在这种情况下,后一个定义会覆盖第一个定义。像
SELECT * FROM (SELECT 2 VAL FROM DUAL) DUAL JOIN (SELECT 1 VAL FROM DUAL) DUAL ON DUAL.VAL = 2
不会返回任何行。
SELECT * FROM (SELECT 2 VAL FROM DUAL) DUAL JOIN (SELECT 1 VAL FROM DUAL) DUAL ON DUAL.VAL = 1
返回一个。
您可以使用因子子查询执行相同的操作,但在这种情况下,后一个定义不会覆盖第一个:
WITH T AS (SELECT 1 X FROM DUAL),
T AS (SELECT 2 X FROM DUAL)
SELECT
*
FROM
T
返回1.
但我强烈建议不要依赖这些行为并使用独特的对象资格。