始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

MySQL与Oracle中分组、聚合函数的区别

发布时间:  2012/9/24 17:16:00

今天需要这样一句sql:先用group by进行分组,然后利用聚合函数count 或者sum进行计算,并显示其它的辅助信息。

在MySQL环境中,我模拟如下环境:

CREATE TABLE `room` (                     -
 


          `rid` varchar(5) default NULL,         

          `rname` varchar(5) default NULL,       

          `pid` int(11) default NULL,            

          `seq` int(11) NOT NULL auto_increment, 

          PRIMARY KEY  (`seq`)                   

        ) ENGINE=InnoDB DEFAULT CHARSET=utf8  
 房间表,seq房间入住序号(主键),rname为房间名,这里不考虑第三范式

情景:人住房间,

统计某个房间某个人住的次数

 

用户表,客人的信息
 
CREATE TABLE `user1` (                  

          `ID` int(11) NOT NULL auto_increment, 

          `USERNAME` varchar(50) default '',    

          `PASSWORD` varchar(50) default '',    

          PRIMARY KEY  (`ID`)                   

        ) ENGINE=InnoDB DEFAULT CHARSET=gbk
 

Mysql中语句如下:

select count(u.username),r.rname,r.rid,r.pid

from room r,user1 u

where r.pid=u.id

group by r.rid,r.pid

这里r.rname并没有出现在group by子句、聚合函数中,但是MYSQL中仍然能够执行、列出数据。
 
但是,在Oracle中,却不能!!!!
 
Oracle环境中:

/*

 --显示:Ora-00979 not a ORDER BY expression

 --因为: order by 后边的c.channel_code不在ORDER BY子句中

 select count(c.channel_name),m.media_name

  from channel c,media m

  where c.media_code = m.media_code

 group by c.media_code,m.media_name

 order by c.channel_code

 

--显示:Ora-00979 not a GROUP BY expression

--因为:group by 或者聚合函数中没有包含c.channel_name

 select count(c.channel_name),m.media_name,c.channel_name

  from channel c,media m

  where c.media_code = m.media_code

 group by c.media_code,m.media_name

  */

--通过:

select count(c.channel_name),m.media_name

  from channel c,media m

  where c.media_code = m.media_code

 group by m.media_name

--正常

select count(c.channel_name),m.media_name

  from channel c,media m

  where c.media_code = m.media_code

 group by c.media_code,m.media_name

 

--正常

select count(c.channel_code),m.media_name

  from channel c,media m

  where c.media_code = m.media_code

 group by c.media_code,m.media_name

 


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线