sql 如何分组排序同时进行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 如何分组排序同时进行相关的知识,希望对你有一定的参考价值。

我刚才运行一句
select distinct top 5 a.itemname from qusmain a inner join qusremark b on a.id=b.parentid where b.userid=3 order by id desc
报如下错误:消息 145,级别 15,状态 1,第 1 行
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
还是不行啊!

1、首先输入代码:

SELECT * FROM (select * from CJ where Gender='女') m

where( select COUNT(*) from (select * from CJ where Gender='女') n

     where m.Classid = n.Classid and n.English > m.English)<2

    order by Classid, English desc

2、然后再输入代码:

SELECT * FROM CJ m

 where(

 select COUNT(*) from CJ n

     where m.Classid = n.Classid and n.English > m.English and n.Gender='女')<2   --指的是内表

and Gender='女'  --指的是外表

    order by Classid, English desc

3、然后这样就完成了。

参考技术A 意思就是DISTINCT后面你要选的在ORDER BY中也必须出现
可以这样
select top 5 distinct t.itemname
from
(select top 5 a.itemname, a.id
from qusmain a inner join qusremark b on a.id=b.parentid
where b.userid=3 order by a.id desc ) t
或这样
select distinct top 5 a.itemname ,a.id
from qusmain a inner join qusremark b on a.id=b.parentid
where b.userid=3 order by id desc
看哪个是你要的本回答被提问者采纳
参考技术B

    SQL 分组关键字 group by 

    排序关键字order by

    假如定义一个表,如name,count 字段

    其中name 为字符串类型,count 为int 类型

    SQL 如下:

    select name,sum(count) from table

    group by name

    order by name asc

    order by 可以按降序或升序,asc 代表升序,desc 代表降序

参考技术C select distinct from (select top 5 a.itemname from qusmain a inner join qusremark b on a.id=b.parentid where b.userid=3 order by id desc )

以上是关于sql 如何分组排序同时进行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用分组行对 SQL 查询进行排序

如何编写 sql 查询对数据集进行排序或分组

sql 分组排序

如何对DevExpress ASPxGridView进行分组排序

mySQL分组排序

Mysql 分组并排序