sql设计问题

全选.png

如果我按照id分组排序,取时间戳最新的,只会出现一条数据,如果我按照姓名排序,到是出现了3调数据.当出现了另一个id为2,并且姓名一模一样的,那就会出现另一种结果,这个该怎么办?

FineReport 用户kWEye3931 发布于 2020-7-17 10:13 (编辑于 2020-7-17 10:16)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
zsh331Lv8专家互助
发布于2020-7-17 10:15(编辑于 2020-7-17 10:25)

思路:分组取时间戳最大的行



select n.*
from 
(
select a.id,b.人名,max(b.时间戳) as max_t from a inner join b on a.id =b.id 
group by a.id,b.人名
) m
inner join b n on m.id = n.id and m.max_t =n.时间戳 and m.人名 = n.人名


最佳回答
0
shirokoLv6资深互助
发布于2020-7-17 10:32

SELECT  A.ID,A.人名,B.内容,A.时间戳 FROM 

(SELECT  ID,人名,MAX(时间戳) 时间戳 FROM 表 GROUP BY ID,人名) A

LEFT JOIN 表  B  ON A.ID=B.ID AND A.人名=B.人名 AND A.时间戳=B.时间戳 


最佳回答
0
luojian0323Lv7资深互助
发布于2020-7-17 10:36

是两个表对吧

假设 是这两个表

image.png

select m.*,n.内容
from 
(
select a.id,a.人名,max(a.时间戳) as 时间戳 from a group by a.id,a.人名
)m
inner join b n on m.id = n.id


  • 4关注人数
  • 353浏览人数
  • 最后回答于:2020-7-17 10:36
    请选择关闭问题的原因
    确定 取消
    返回顶部