我完全被看似简单的问题所困扰.也许我只是感到困惑,因为我一直在思考/谷歌搜索/搜索它太久了.
请考虑下表:
log_id (auto increment primary key)
domain_id (foreign key to "domains" table)
type (enum('notice','warning'))
message (varchar)
执行以下选择:
SELECT *
FROM logs
WHERE domain_id = 4
比如,给我2个“通知”类型的日志和3个“警告”类型的日志.
我如何仅选择具有最高ID类型的日志?有效地为每个domain_id和类型提供最新的日志.
只是描述它让我感到愚蠢,但我似乎无法做到正确..
谢谢你的帮助.
克里斯
编辑:
为了将来参考,如果您想要从第一个表中选择所有记录并显示已连接表的最新记录(在这种情况下选择所有域及其最新日志记录(如果可用)),只需在域上包含一个选择桌子周围:
SELECT
domains.*,
logs.*
FROM
domains
LEFT JOIN (
SELECT
l.*
FROM
logs l
INNER JOIN (
SELECT
MAX(log_id) as maxid
FROM
logs
GROUP BY
domain_id
type
) l3 ON l.log_id = l3.maxid
) l2 USING (domain_id)