我完全无法理解似乎是一个简单问题。也许我只是困惑,因为我一直在思考/搜索/搜索太久。选择每个外键类型的最高记录
考虑下表:
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为type
的日志?有效地给我最新日志为domain_id
和type
。
只是描述这让我感到愚蠢,但我似乎无法得到它的权利..
感谢您的帮助。
克里斯
编辑: 以供将来参考,如果你想从第一个表中的所有记录并显示连接表的最新记录(在这种情况下,选择所有的域和他们最新的日志记录(如果可用)),只是保鲜膜选择上域表周围:
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)
+ 1的打字速度比我快:) – MatBailie 2012-01-09 16:37:42
谢谢埃里克,像一个魅力。 – Chris 2012-01-10 07:23:08