【发布时间】:2019-05-31 13:07:20
【问题描述】:
如果之前有人以类似的方式提出过这个问题,我深表歉意。我对 SQL 相当陌生,并且很难找到解决问题的方法。很困惑。
我目前有三个表:
模板 - |编号 |姓名 |
用户 - |编号 |全名 |
更新日志 - |编号 | id_user | id_template | last_edited_at
我有一个充满模板的表格。
我有一个单独的表,其中包含对这些模板进行更改的用户。每次进行更改时,都会在更改日志表中创建一个条目。
我正在尝试创建一个查询,其主要目标是从模板中获取每条记录,以及它最近更改的时间,以及按谁。
我想出了这个查询,它可以让我找到特定模板 ID 的最新更改。
SELECT changelogs.id_user, changelogs.updated_at, users.full_name
FROM changelogs
JOIN users
ON changelogs.id_user = users.id
WHERE changelogs.id_template = :templateId
ORDER BY changelogs.updated_at DESC
LIMIT 1
我最初尝试通过遍历每个模板记录并为每个记录 ID 运行上述查询来解决此问题,但这很慢并且不起作用。我知道在 SQL 中必须有一种方法可以做到这一点,我想看看是否有人解决了类似的问题。这个数据库不是我设计的,如果没有优化很抱歉。
我理想的最终结果应该是一个如下所示的表格:
|模板.id |模板名称 |用户名 | changelog.updated_at |
非常感谢您的任何指导
【问题讨论】:
标签: mysql sql database greatest-n-per-group database-administration