如何仅获取最近的值

How to get last recent value only

我有两个表 master table1 和 detail table2

Table1结构

table1_id integer,
description varchar(50)

Table2结构

table2_id integer,
table1_id integer,
price numeric(7,2),
Price_date date

我需要在这两个表之间写 SQL 或 link 的视图,但是我想从 table2 中得到的问题只是为了获得一个最新的值price 字段使用 price_date 字段与 table1 编辑 link,换句话说,我不想从 Table2.table1_id 字段中获取任何重复项。我应该怎么写 SQL ?

我假设您想要 table 中每个 table1_id 的所有最新条目,而不仅仅是最新条目(这要简单得多)。

如果你想要每个table1_id的最新记录,你首先需要select每个id的最新记录,然后查询其余的记录,所以像这样:

WITH latestprice (
    SELECT table1_id, MAX(price_date) AS price_date
    FROM table2
    GROUP BY table1_id
)
SELECT t2.table2_id, t2.table1_id, t2.price, t2.price_date
FROM latestprice l
INNER JOIN table2 t2
    ON t2.table1_ud = l.table1_id AND t2.price_date = l.price_date

如果您还需要来自 table1 的信息,那么您需要添加一个额外的连接。请注意,上述查询有一个缺陷:如果 table1_id 有多个具有相同 price_date 的条目,它将为每个 table_id 生成多行和重复项。如果你想强制这不会发生,你需要为 table1_id, price_date.

添加一个唯一约束