【发布时间】:2021-09-27 11:55:51
【问题描述】:
我有疑问
INSERT INTO MYTABLE(NAME,NUM)
SELECT NAME,NUM
FROM DATA
INNER JOIN T3
ON MYTABLE.NUM = T3.NUM
ORDER BY MYTABLE.NUM
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY;
运行此程序会导致以下错误:
SQL 错误:ORA-00918:列定义不明确
但是当我在没有OFFSET 部分的情况下运行上面的查询时,它可以工作。
FETCH 与 INSERT SELECT 不兼容吗?
【问题讨论】:
-
I cannot reproduce this。但是Oracle 11g根本没有这个子句,所以不管有没有
offset都行不通 -
@astentx 我已更新查询以帮助重现
-
嗯,你原来的问题和你的例子不一样。您需要完全限定对该列的每个引用,以便: 1) 为包括未来您在内的所有人提供查询的可支持性,当您问自己该列应该来自哪里时; 2) 允许查询有效而不管任何新的未使用的列; 3)当过滤器/连接中的列出人意料地来自另一个表时,避免意外且很难发现的错误。如果连接数据集中有两个
id列,Oracle 应该如何知道使用哪一个? -
无论
offset如何,您的示例都会失败