首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我必须解决的当前问题的SQL选择问题

我必须解决的当前问题的SQL选择问题
EN

Stack Overflow用户
提问于 2020-05-13 06:10:25
回答 1查看 27关注 0票数 0

这只是一个关于SQL的简单问题,我无法找到解决方案。

代码语言:javascript
代码运行次数:0
运行
复制
table 2 AUditLog
Machine     SettingCode     User        changeSTR       timeChanged     Order
A              C1           U1          0->10           12/5/2020 10h00   1
A              C1           U2          10->3           12/5/2020 10h07   1
A              C1           U1           0->3           12/5/2020 11h00   3

我想对这个表AuditLog执行一次select操作,并且有。(在同一台机器、settingCode、Order的情况下)我希望得到最近更改的用户的结果。

代码语言:javascript
代码运行次数:0
运行
复制
Machine SettingCode     LastUserChange      Order
A       C1               U2                  1
A       C1               U1                  3
EN

回答 1

Stack Overflow用户

发布于 2020-05-13 06:15:09

一种简单且可移植的解决方案是使用相关子查询进行过滤:

代码语言:javascript
代码运行次数:0
运行
复制
select a.*
from auditLog a
where a.timeChanged = (
    select max(a1.timeChanged) 
    from auditLog a1 
    where 
        a1.machine = a.machine 
        and a1.settingCode = a.settingCode 
        and a1.order = a.order
)

您也可以使用row_number(),如果您的数据库支持窗口函数:

代码语言:javascript
代码运行次数:0
运行
复制
select *
from (
    select 
        a.*,
        row_number() over(
            partition by machine, settingCode, a.order 
            order by timeChanged desc) rn
    from auditLog a
) a
where rn = 1

注意,order是一个SQL关键字,因此不是列名的好选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61762872

复制
相关文章

相似问题

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