我有两张桌子。考虑它们表A和表B.
表A中包含的东西列表。
表B 可能的条目指向表A中的 thing 。
也就是说,对于表A中的每一行,表B中可能有0行或 n 行链接回它(通过表B中的某些ID列)。 / p>
我想要做的是运行带有某种JOIN的SELECT语句,它返回表A中所有行的列表(所有列)和表B中的1列,其中表B中的1列是有序的DESC(该列是时间戳,我想要最新的时间戳。
也就是说,我希望我的SELECT语句为表A中的每一行返回1行。结果集中的一列将是表B中的数据,并且它必须从最近的数据中获取数据对应于表A行的条目。
我真的不知道如何做到这一点。我甚至尝试将“TableB.created_on = max(TableB.created_on)”添加到JOIN的ON子句中。
答案 0 :(得分:1)
假设样本架构看起来像
CREATE TABLE a
(id INT, description VARCHAR(64));
CREATE TABLE b
(id INT, timestamp timestamp);
你可以做到
SELECT *,
(SELECT MAX(timestamp)
FROM b
WHERE id = a.id) max_timestamp
FROM a
或
SELECT a.id, a.description, MAX(b.timestamp)
FROM a JOIN b
ON a.id = b.id
GROUP BY a.id, a.description
SQLFiddle (对于两个查询)