(转)oracle 中GROUP BY的用法ITeye - 牛牛娱乐

(转)oracle 中GROUP BY的用法ITeye

2019-01-10 17:13:12 | 作者: 寻春 | 标签: 函数,分组,聚合 | 浏览: 926

问题:

select item.itemnum,item.in1,item.in4,inventory.location from item,inventory

where item.itemnum=inventory.itemnum

and inventory.location=DYB

and item.in1=D/MTD/MRM

GROUP BY ITEM.ITEMNUM

提示过错是NOT A GROUP BY EXPRESSION

答案:

GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数合作运用,你能够想想

你用了GROUP BY 按 ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改怎么显现呢,比方下面所示

A B

1 abc

1 bcd

1 asdfg

select A,B from table group by A

你说这样查出来是什么成果,

A B

    abc

1 bcd

    asdfg

右边3条怎么变成一条,所以需求用到聚合函数,比方

select A,count(B) 数量 from table group by A

这样的成果便是

A 数量

1 3

group by 有一个准则,便是 select 后边的一切列中,没有运用聚合函数的列,有必要出现在 group by 后边

评论:mysql和oracle对group by的解析是不一样的!

mysql:

SELECT s.SName, sc.COUNT(CID) c
FROM SC sc JOIN S s ON sc.SID = s. SID
GROUP BY s.SID
HAVING c = ( SELECT COUNT(*) FROM C )

oracle:

SELECT s.SID, s.SName, sc.COUNT(CID) c
FROM   SC sc JOIN S s ON sc.SID = s.SID
GROUP BY s.SID, s.SName
HAVING c = ( SELECT COUNT(*) FROM C )


我们能够看到区别了,mysql对group by子句的约束有所放宽,除了调集函数之外的被查询字段也能够不参加分组。相反oracle则是严格要求,所以感觉mysql好像更灵敏一些。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章