Sql group by与order by 后面的列的问题

在我的student表中有sno,sname,sdept,sage
我直接这样写order by后面的列并没有在select后面答案是对的
select sno,sname from student order by sage desc; //没有问题
但是我用加上group by后,按照它报的错,order by后面的列必须要是在group by中出现的,这是为什么呢?
select sname,sdept,ssex from student group by sname,sdept,ssex having sdept ='MA' and ssex = '女' order by sage; //有错
select sname,sdept,ssex from student group by sname,sdept,ssex having sdept ='MA' and ssex = '女' order by sname; //这样也没问题

0

2个回答

这是group by的语法,分组了以后,order需要是分组的列

0

 SQL中group by和order by    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。   在带有group......
答案就在这里:SQL中group by和order by
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SQL中group by分组查询的内容(包含to_char和order by)
值得一提的是,在公司实习的期间,有很多表格需要用到分组查询,然而并不会。还好大哥的耐心传授。n这是分组查询的SQL语句:nselect to_char(t.begintime, ‘DD’) as YM, sum(nvl(t.power,0)) as sum_power n from cb_craneequipment t n where to_char(t.begintime
使用group by查询时order by无效问题解决
第一种写法:    SELECT * FROM t_kaoqin  WHERE p_id=1 AND TO_DAYS(t_kaoqin.kq_time)=TO_DAYS(NOW())  GROUP BY user_id  ORDER BY kq_time DESC    问题:发现先执行的group by,后执行order by,我要的结果是先排序再分组。第二种写法:    SELEC...
[SQL]group by和order by是否能写字段别名
一、错误实例nnn--剔除污染之后每一组人数不同nselect n camp.group_id as group_id --实验分组n ,int((datediff(arrive.arrive_dt,'2018-06-20')-1)/7)+1 as ob_week --观察周n ,count(distinct camp.driver_id) as group_cnt --组人数n...
sql 先order by,再group by的问题。
打个比方来记录一下这个细节问题。nn首先有个test表nnnn想要的数据是:甲 status =0 的一条数据。nnnn但如果先group by 再排序,默认机制永远是id=1的显示出来。nnnn我就先写子查询再分组。还是不行。原来是sql语句的问题。nn(错误语句)nnnselect * from test where id in (select id from test order by `s...
sql实现先order后group方法
SELECT * FROM (SELECT * FROM case_report ORDER BY Id DESC) AS T GROUP BY T.case_id
使用group by分组之后子查询的order by排序失效的问题
需求:n1.首页的查询需要按照lrsj进行排序n2.每一条数据通过fchrq,chxh进行分组n原始的sqln SELECT fchrq,chxh FROMn (SELECT top 100 percent chxh,fchrq,lrsj FROM HCZZQD_source where chxh is not null n n ORDER BY lrsj desc) T
Oracle中Order By与序列以及Group by和取结果集行数并用
今天碰到一个很奇怪的问题,Oracle中Order By与序列同时用报错,情况是这样的。rn1、这样直接一起用报错:rn SELECT W_T_SEQ.Nextval, rn IP.ROW_NO, rn IP.NUMBERrn FROM IMP_T IP rn WHERE NUMBER = '80112' rn O...
SQL中 group by 1, order by 1 语句是什么意思
SQL中 group by 1, order by 1 语句是什么意思? 1指的是select语句后面第一列(属性)
数据库:join(连接)、group by(分组)、order by(排序)、where(条件)的执行顺序
join(连接)、group by(分组)、order by(排序)、where(条件)是数据库最常用的几个函数,这里简单介绍下各个函数的作用,及其共同使用时的使用顺序。nnnn函数的作用nnjoin:join主要是为了获取两个表中匹配关系时使用。nn具体用法见这篇博客:https://blog.csdn.net/alice_tl/article/details/88765731ngroup ...
oracle、mysql、hive中的字段别名是否可以在where、group by、having、order by中直接使用
Mysql 版本5.7.20where中不能直接使用字段的别名,group by、having、order by可以直接使用Oracle 版本12c where、group by、having中不能直接使用字段的别名,order by可以直接使用Hive 版本1.3.0where、group by、having中不能直接使用字段的别名,order by可以直接使用...
order by 和 group by之间的使用注意事项及理解原理
order by 是对前面所进行查询得到的结果进行排序,并不是说一定是对最后的查询结果进行排序。第一段代码是在group by 之前进行排序,明显是错的,order by 字句已经让结果只有一个记录,再对其进行分组会出现错误;而先进行分组再排序就是可以的;...
sql分组排序(union order by排序问题)
在实际的查询过程中我们时常会有这样的需求:某一类数据很重要要排在前面,其他数据排在后面,默认安装创建时间或者其他字段进行排序,这时候最好的办法就是用union 将查询到的两个数据集进行组合排序,添加一个伪列对分组进行组外排序,sql如下:nnselect * from(nSELECT *,1 as 'sort' FROM sakila.film where rating='G'nunionnsel...
laravel框架sql中groupBy之后排序的问题
对查询结果进行排序并进行分页(进行了简略修改),下面是最终结果代码:nnn$example = Example::select(DB::raw('max(id) as some_id,this_id'))n    ->where('id', $id)n    ->groupBy('this_id')n    ->orderBy('some_id', 'desc')n    -&g...
使用group by查询时orderby无效问题解决
select n    A.*,nB.T_THZSCn from T_CALL_RECORDS An left join (select sum(T_THSC) T_THZSC,T_BJHM from T_CALL_RECORDS GROUP BY T_BJHM) Bnon A.T_BJHM=B.T_BJHM nwhere ROWNUM>0norder by T_RKSJ descnn解决办...
ORDER BY 子句中的列 "******" 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
select cno from scores group by cno having count(*) > 1 order by degree asc上面的代码会报错,我们都知道select 后面查询的列名(除了聚集函数)全部都要在group by 后出现如果你不知道可以参考https://blog.csdn.net/qq_41682681/article/details/80763975这...
Mysql之group by 和order by 一起用时的排序问题
业务需求,需要查询表里不同分类下的order最大的记录。nn查看表中的记录:nnnSELECT id,tid,`order`, FROM_UNIXTIME(yestime) FROM tfen nWHERE tid IN(7512, 7514) nORDER BY `order` DESC ;nn结果如下:nnnn排序的sql语句:nnnSELECT id,tid,`order`, FROM_UN...
sql语句中where、group by、having、order by 是否可以使用别名
1、在mysql中,group by中可以使用别名;where中不能使用别名;order by中可以使用别名。rnrnrn2、在oracle中:rn1)where/group by/having子句中只能直接使用栏位或者常量,而不能使用栏位的别名,除非这个别名来自子查询之中,如:select .... from (select col1 ccc from table) where ccc > 1 
选择列表中的列 'orders.order_id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
今天进行数据库查询是分组时间出现了:消息 8120,级别 16,状态 1,第 1 行选择列表中的列 'orders.order_id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。的错误,写的sql语句如下:select o.goods_id ,g.goods_name,sum(goods_number) totalfrom orders o left join goods go...
连接(join)group by、order by、where的执行顺序
连接(join)group by、order by、where的执行顺序一、group byngroup by主要用于分组,达到对数据的分类更加精确。 ngroup by中存在的列必须是有效的列(即为表的列字段)。同时若在select 中存在,必须在group by中列出,不能使用别名。 ngroup by必须位于where 后,order by前;此外一般与order by一起使用。 ngro
group by后取第一条数据
       因为在mysql的查询语句顺序上会有先后,先执行group by之后才会执行order by,所以对于以下这种数据:nnnn 我的sql语句是这样写的:nnSELECT act_goods.goods_id,goods.goods_name,act_goods.act_price  FROM nata_activity_goods act_goods nLEFT JOIN shopp...
mysql中group by和order by同时使用无效的替代方案
前言最近一年由于工作需要大部分使用的都是NoSql数据库,对关系型数据库感觉越来越陌生,一个由group by和order by 引发的血案由此而生。在此做个记录,以备不时之需。需求(得到所有barCode的最新的一条数据)首先,看一下整体的表结构。 n n现在查找每个barCode中最新的数据。由于数据太多,不是很好看到效果。我们就拿一个barCode为4565789的数据做示例。SELECT
oracle mysql group by 对剩余字段进行拼接
效果:oracle:一、10G以前使用WMSYS.WM_CONCAT n wmsys.wm_concat将字段的值用”,”来隔开。 n select id,wm_concat(name) from tab_name group by id; n二、sys_connect_by_path n sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,
调用Jfinal paginate分页含有group by问题的坑
调用框架的paginate分页函数的时候,他在计算总条数的时候,会将传入的selectStr 替换为count(*),这如果我的SQL 带有groupby,那么group by将不起作用,得到的总条数为未分组的条数nn解决办法:nnnnstring from =" select * ";nnString sql = [原来的含有 group by 的sql语句]nnString sqlExcept...
GROUP BY ORDER BY 同时使用按时间排序
需要:合并相同用户名,公司按逗号分隔。并且要按新增修改时间排序。n网上查了一下   GROUP BY ORDER BY 想要同时使用 ,ORDER BY  中的字段一定要在GROUP BY 中出现的字段,但这样会导致不同时间添加的同一用户名下没办法合成同一条数据。n后来自己研究了一下发现 可以用max函数  MAX(A.STATE_TIME) STATE_TIME ,这样就不用放GROUP B
Mysql5.7版本group by 子查询中order by 无效的问题解决办法
我们都知道group by 会选择保留第一条数据,默认是按照id排序的,如果我们想通过别的字段排序,比如最后创建的那条记录,可以先按照创建时间降序,再group by即可得到每个分组的最新创建的数据。nn例:nn通过如下sql查出两条数据nnnSELECT * FROM xxx WHERE groupId = 11 ORDER BY effectiveDate DESCnnnn现在group by...
mysql select后边的column不在group by里会怎样
mysql 5.7 的manual:rnhttp://dev.mysql.com/doc/refman/5.7/en/counting-rows.htmlrnrnrnrn4.3.4.8 Counting RowsrnIf ONLY_FULL_GROUP_BY isrn not enabled, the query is processed by treating all rows as a sin
group by 和 order by 的区别 + 理解过程
order by 和 group by 的区别nnorder by 和 group by 的区别:nn1,order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。nn2,group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。nn注意:聚合函数是---sum()、count()、...
group by、order by与having、where,的位置先后。
rnorder by 是对数据进行排序,默认是升序ASC,降序用DESCrn rn这几条关键字 是有先后顺序的.rn where.....group by....having.....order by   (这里的group by 与 having 的位置可以调换,但是having放在后面效率高)!rn rn rn1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用r...
分组 分页查询 (group by 和order by使用 )
分组:rnselect Department,count(*) as Total from DepartMent a left join Users b on a.DepartId=b.UDepartId group by Departmentrnrnrnrn分组、分页一起使用rn select top 10 Department,count(*) as Total,DepartId from
SELECT列表的表达式不在GROUP BY子句中,并且包含非聚合列,这与sql_mode = only_full_group_by不兼容
mysql报错:nSELECT list is not in GROUP BY clause and contains nonaggregated column ‘goldencis_voc.t_alarm_history.alarm_time’ which is not functionally dependent on columns in GROUP BY clause; this is i...
group_concat()加上order by/group by会被截取字符串的解决办法
使用group_concat()拼接字符串查询的时候,若长度有点长,则会被截取。但是查了mysql里面限制的最长的group_concat()长度,并没有超出。最后发现是因为查询语句最后加上了order by或者group by导致的。可能和mysql版本有关系。
数据库(学习笔记二) ------ sql查询语句(where,group by , having ,order by , limit)
查询 查询一共有5个子句,分别为:where,group by , having ,order by , limit; 如果要选择使用多个的时候,书写顺序必须是这个顺序,否则会报语法错误。----------------------------------------------------------------------------------------------------------...
MySQL的存储过程中Limit与CONCA函数结合使用时出现的参数被忽略问题的解决
1、correct: delimiter $$create procedure getJointProjectIDByStudentIDAndProjStatus    (IN StuID varchar(16), IN ProjStatus int, IN fromPara VARCHAR(4), IN toPara VARCHAR(4)) BEGIN         SET @dd = CON...
MySQL中用order by排序的字段不一定要在select语句中
说明:本文测试时使用的MySQL版本是5.7.22nn对于5.7.22版本的MySQL,用order by排序的字段不一定要在select语句中,即使是select distinct与order by同时使用。nn示例:nn现有一张记录学生成绩的grade表:nn+------+--------+-------+n| id   | name   | score |n+------+--------...
GROUP BY...WITH ROLL UP 分组统计后的再合计
GROUP BY...WITH ROLL UP 是group by 的高配版,在group by 分组之后,再合计总数。nex:求8月1号到9号每日投资人数  nSELECTnCOUNT(DISTINCT investor_uid)AA,nFROM_UNIXTIME(add_time, '%Y-%m-%d')BBnFROMnlzh_borrow_investornWHEREnFRO
wm_concat函数的排序问题
准备数据:nncreate table test(nn varchar2(20),nm varchar(20) n);n  insert into test values ('0',  '1');n insert into test values ('1',  '1');n insert into test values ('10', '1');n insert into test values ...
选择列表中的列 'A.id' 无效
出错:sql语句报错,选择列表中的列rn 'A.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中rnrnrn出错处: String sql="select count(*) from goodsorder where ifhide='"+ifhidern                +"' and member='" + member + "' and flag='" + f
mysql group by limit (根据某一分组,取固定条数) 实现
小懒懒:IT公司php程序员nn大坑比:小懒懒公司  产品nnnnnn大坑比  需求:统计出    上次打boss周活动  每个服下   每个阵营  分数的前三名 我要的是后台功能  2秒之内显示出来!! (就是根据分数排名!!) nnn小懒懒  : 额 知道了! (艹  数据量这么大 坑我吧 难道每个服,每一个阵营 一个一个的查?!这种可以但是查询要使用好几个sql 如果服
关于“该列没有包含在聚合函数或 GROUP BY 子句中”
GROUP BY 子句指定用来放置输出行的组,并且如果 SELECT 子句 中包含聚合函数,则计算每组的汇总值。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。SELECT U_ID,House_Addrinfo,COUNT(U_ID) AS CXFROM YX_ChuShouGROU...
mysql里面同时使用order by 和group by时需要注意
ORDER BY 子句中的列必须包含在查找字段或 GROUP BY 子句中。nn查询购物车下商品列表nnselect time,shop_id from TABLE where uid=UID group by shop_id order by time
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题