0

我有两张桌子。考虑一下表 A 和表 B。

表A中有一个列表。

表 B可能有指向表 A中事物的条目。

也就是说,对于表 A 中的每一行,表 B 中可能有 0 行或n行链接回它(通过表 B 中的一些 ID 列)。

我想要做的是使用某种 JOIN 运行 1 SELECT 语句,它返回表 A 中的所有行(所有列)和表 B 中的 1 列的列表,其中表 B 中的 1 列按 DESC 排序(列是时间戳,我想要最近的时间戳)。

也就是说,我希望我的 SELECT 语句为表 A 中的每一行返回 1 行。结果集中的一列将是表 B 中的数据,它必须从对应于的最新条目中获取数据表 A 行。

我真的不知道如何做到这一点。我什至尝试将“TableB.created_on = max(TableB.created_on)”添加到 JOIN 的 ON 子句中。

4

1 回答 1

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(对于两个查询)

于 2013-05-15T18:44:07.923 回答