首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INSERT-SELECT不使用FETCH NEXT [x]行

INSERT-SELECT不使用FETCH NEXT [x]行
EN

Stack Overflow用户
提问于 2021-07-19 20:56:04
回答 1查看 206关注 0票数 0

我有疑问

代码语言:javascript
复制
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部分的情况下运行上面的查询时,它可以工作。

FETCHINSERT SELECT不兼容吗?

EN

回答 1

Stack Overflow用户

发布于 2021-07-19 21:15:00

是的,FETCHINSERT...SELECT兼容。我把这作为回答而不是评论,因为这是你发布的问题的答案。

ORA-00918FETCH子句一起使用的最常见原因是,选择列表中的任何变量都不可能具有相同的名称。例如,这个SELECT是合法的:

代码语言:javascript
复制
SELECT object_type, object_name, object_name
FROM   dba_objects
WHERE OBJECT_NAME LIKE 'USER%'
ORDER BY 1, 2

。。而这个不是..。

代码语言:javascript
复制
SELECT object_type, object_name, object_name
FROM   dba_objects
WHERE OBJECT_NAME LIKE 'USER%'
ORDER BY 1, 2
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY;

检查您的查询,并确保所有列名/别名都是唯一的。

更新

回顾您的SQL,这是一个园艺品种ORA-00918。这与您的INSERTFETCH无关。您正在连接两个具有相同列的表,并且没有指定要选择哪个表并按哪个表进行排序。将您的声明更改为:

代码语言:javascript
复制
insert into t2(id, val)
select t.id, t.val
from t
inner join t3
on t.val=t3.val
order by t.id desc
offset 3 rows
fetch first 5 rows only
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68446930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档