加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle SQL:如何在具有IDENTITY列的表上使用GROUP BY子句插入SE

发布时间:2020-12-12 16:25:19 所属栏目:百科 来源:网络整理
导读:在一个应用程序中,我打算在Oracle 12c数据库上截断和插入,但是在IDENTITY列中发现了这个问题.尽管INSERT … SELECT语句适用于我尝试过的大多数SELECT语句,但是当这个语句也有GROUP BY子句时,它无法工作,发出“ORA-00979:不是GROUP BY表达式”的抱怨.下面是
在一个应用程序中,我打算在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','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;

它适用于第一个插入,但在下一个插入时失败.

编辑:我已经更改了代码,因此问题更容易理解,同时仍然可以重现.

感谢帮助!

在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

引用原始答案时,请记住实现提示没有记录.感谢大家的帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读