首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取每对情侣的最新值(姓名、地址)

获取每对情侣的最新值(姓名、地址)
EN

Stack Overflow用户
提问于 2019-01-30 19:40:01
回答 4查看 40关注 0票数 0

我有一个表,我需要获取该组的最新值(名称、地址)。这意味着我需要获取每个(姓名、地址)对的最大(时间)值,并获取该时间值的last_read。如何在一个select查询中做到这一点?

EN

回答 4

Stack Overflow用户

发布于 2019-01-30 19:43:45

我认为下面应该适合你,你需要使用GROUP BYMAX

代码语言:javascript
复制
select max([time]),
    [name],
    [address]
from yourTable
group by [name], 
    [address]

编辑

您可以尝试其他答案或检查下面,它使用临时表

代码语言:javascript
复制
select max([time]) as last_read_time,
    [name],
    [address]
into #temp_table
from yourTable
group by [name], 
    [address]

select last_read
from yourTable as yt
    inner join #temp_table t
        on yt.[name] = t.[name]
        and yt.[time] = t.last_read_time

IF OBJECT_ID('tempdb..#temp_table', 'U') IS NOT NULL
票数 1
EN

Stack Overflow用户

发布于 2019-01-30 19:44:29

在大多数数据库中,相关子查询是一种很好的方法:

代码语言:javascript
复制
select t.*
from t
where t.time = (select max(t2.time)
                from t t2
                where t2.name = t.name and t2.address = t.address
               );

特别是,这可以利用(name, address, time)上的索引。

票数 0
EN

Stack Overflow用户

发布于 2019-01-30 19:48:07

如果您的数据库管理系统支持,则可以使用row_number()

代码语言:javascript
复制
select * from 
(select *,row_number() over(partition by name,address order by time desc) rn
) t where t.rn=1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54439787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档