sql多表分组查询并排序的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql多表分组查询并排序的问题相关的知识,希望对你有一定的参考价值。

假设有三张表:

tb1

sID name

tb2
sID tID name

tb3
tID name time

tb2和tb1根据sID关联,tb3和tb2根据tID关联

我想写一个sql语句:根据tb1的sID分组分别得到tID,然后获取各sID下的tID,最后根据tb3的time(smalldatetime)排序得到各分组的第一个tb3的name的数据(就是我想取到各Sid下的最后时间的name)

select sID,name,time from (
select tb1.sID,tb2.tID,tb3.name,tb3.time
,row_number() over (partition by tb1.sID order by tb3.time desc) seq
from tb1 a
inner join tb2 b on a.sID=b.sID
inner join tb3 c on b.tID=c.tID
) t where seq=1

参考技术A 标识一下各表的主键,from 数据库,group by 升序或者降序 参考技术B 请把各表的 主键 标示一下 group by order by top 1
并且把 使用的数据库 也说一下

JPA多表关联 去重 排序问题

关于jpa的查询 在网上能查到的资料太有限了 今天自己遇到的问题 记录下

JPA 动态查询语句 多表关联后 就会有重复的问题,这是我们不想看到的,自定义sql的时候可以通过group by ,distinct来解决

JPA中也是如此,只是不知道写在什么地方 如何来写。

CriteriaQuery 提供了 很好的支持

 query.groupBy(root.get("id"),...);//分组设置 分组比较麻烦,jpa默认的是把所有列都显示出来 如果想分组 要把所有列都加入到这里来

 query.distinct(true);//去重设置 这个比较好用 简单方便

 query.orderBy(cb.asc(root.get("abc")));//排序设置

问题解决了,其实很简单,只是不熟悉。

以上是关于sql多表分组查询并排序的问题的主要内容,如果未能解决你的问题,请参考以下文章

010.简单查询分组统计查询多表连接查询(sql实例)

mysql 多表 查询 之后 group by 分组 order by 无法按照日期排序

mysql 分组子查询sql怎么写

ORACLE分组排序查询

单表查询: where group by 分组 having distinct 去重 order by 排序 limit 多表查询 子查询 连表查询

Mysql 关键字的优先级 分组 多表联查