Hec*_*ros 5 sql database oracle
在一个应用程序中,我打算在Oracle 12c数据库上截断和插入,但是在IDENTITY列中发现了这个问题.尽管该INSERT... SELECT语句适用于SELECT我曾尝试过的大多数用法,但当该语句也有一个GROUP BY条款时,它无法工作,发出"ORA-00979:非GROUP BY表达式"投诉.下面是一些示例代码:
create table aux (
owner_name varchar2(20),
pet varchar2(20) );
insert into aux values ('Scott', 'dog');
insert into aux values ('Mike', 'dog');
insert into aux values ('Mike', 'cat');
insert into aux values ('John', 'turtle');
create table T1 (
id number generated always as identity,
owner_name varchar2(20),
pet_count number
);
insert into T1 (owner_name, pet_count)
select owner_name, count(*) as pet_count from aux group by owner_name;
select owner_name, count(*) as pet_count from aux group by owner_name;
Run Code Online (Sandbox Code Playgroud)
它适用于第一个插入,但在下一个插入时失败.
编辑:我已经更改了代码,因此问题更容易理解,同时仍然可以重现.
感谢帮助!
在Oracle社区中,已经回答了这个问题。 https://community.oracle.com/message/13227544#13227544
insert into T1 (owner_name, pet_count)
with t as (select /*+ materialize */ owner_name, count(*) as pet_count from aux group by owner_name)
select owner_name, pet_count from t
Run Code Online (Sandbox Code Playgroud)
引用原始答案时,请注意没有记录具体化提示。感谢大家的帮助!