相同查询在相同版本的2个不同Oracle数据库中返回不同的结果

时间:2017-11-07 15:38:20

标签: database oracle11g

表格创建

CREATE TABLE demo
( 
  id number(10) NOT NULL,
  ct number(10) ,
  CONSTRAINT id_pk PRIMARY KEY (id)
);

ROWS INSERTION

insert into demo(id,ct) values(1,4);

insert into demo(id,ct) values(2,2);

insert into demo(id,ct) values(3,3);

insert into demo(id,ct) values(4,2);

select * from demo

select q2.id,q2.ct from (
 select a1.id id,(SELECT sum(ct) from demo a2 
 where a2.id = a1.id) ct 
 from demo a1 ) q2 
group by q2.id

以上查询在一个数据库中失败

  

ORA-00979:不是GROUP BY表达式   00979. 00000 - "不是GROUP BY表达式"   *原因:
  *动作:行错误:1列:14

在另一个数据库中,它返回带有计数的结果

数据库版本:11.2.0.4.0

两个数据库都在相同版本上运行。以下查询的结果在两个DB中都是相同的

SELECT * FROM PRODUCT_COMPONENT_VERSION;

2 个答案:

答案 0 :(得分:0)

分组应该只与组功能一起使用(总和,计数,平均等)。 旧数据库引擎用于接受group by作为order by的意思,这不是正确的用法。

“group by”除了“order by”之外没有其他意义

答案 1 :(得分:0)

查询错误。您需要在q2.ct上应用聚合函数(例如sum(q2.ct))或将其包含在group by子句中。