SQL-只加入id的最新日志条目



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

我得到的第一张表是这样的:

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选择一天,并将其与日志表中的最新条目连接起来。

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

试试这个:

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=?

最新更新