我有两张 table 。考虑表 A 和表 B。
表 A 中有一个事物列表。
表 B 可能包含指向表 A 中事物的条目。
也就是说,对于表 A 中的每一行,表 B 中可能有 0 行或 n 行链接回它(通过表 B 中的某些 ID 列)。
我想要做的是运行 1 个带有某种 JOIN 的 SELECT 语句,该语句返回表 A 中所有行(所有列)和表 B 中的 1 列的列表,其中表 B 中的 1 列按 DESC 排序(该列是时间戳,我想要最近的时间戳)。
也就是说,我希望我的 SELECT 语句为表 A 中的每一行返回 1 行。结果集中的一列将是表 B 中的数据,并且它必须从最新的数据中获取数据与表 A 行对应的条目。
我真的不知道该怎么做。我什至尝试将“TableB.created_on = max(TableB.created_on)”添加到 JOIN 的 ON 子句中。
最佳答案
假设示例架构如下所示
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 (对于两个查询)
关于mysql - 从连接返回表中的最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16572273/