我目前正在编写一个日历应用程序,它支持在几天内切换状态。
我得到的第一张表是这样的:
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=?