【问题标题】:SQL - JOIN only newest log entry for idSQL - 仅加入 id 的最新日志条目
【发布时间】:2021-07-20 12:41:05
【问题描述】:

我目前正在编写一个日历应用程序,它支持几天切换状态。

我拿到的第一张桌子目前是这样的:

days:
|---|-------|----------|------|
|uid|day_id |date      |status|
|1  |1024   |2021-01-01|0     |
|1  |1025   |2021-01-02|0     |
|1  |1026   |2021-02-24|0     |
and so on...

每次超级用户(用户之上的用户,在此示例中用户 ID 为 0)接受一天时,status 列就会更改并在表日志中获得一个条目,一段时间后可能看起来像这样:

log:
|------|------|----------|----------|
|day_id|status|changed_by|timestamp |
|1024  |1     |0         |1619510887|
|1024  |3     |0         |1629510187|
|1024  |2     |0         |1619593687|
|1025  |1     |0         |1619510887|
|1025  |2     |0         |1629510187|
|1026  |2     |0         |1619593687|
and so on...

现在我想通过 days.uid 选择一天并将其与日志表中的最新条目连接起来。

我怎样才能以最好的方式做到这一点?

【问题讨论】:

    标签: mysql join subquery


    【解决方案1】:

    试试这个:

    SELECT * FROM days d
    JOIN (SELECT * FROM log WHERE d.day_id=? ORDER BY timestamp DESC LIMIT 1) l
        ON l.day_id = d.day_id
    WHERE d.uid=? AND d.day_id=?
    

    【讨论】:

    • 哦,伙计,你让我意识到我的问题犯了一个大错误......对不起
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2015-04-15
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多