这应该很简单,但不知何故我的大脑停止了工作。
我有两个相关的表:
表 1:
ID (PK), Value1
表 2:
BatchID, Table1ID (FK to Table 1 ID), Value2
示例数据:
表 1:
ID Value1
1 A
2 B
表 2:
BatchID Table1ID Value2
1 1 100
2 1 101
3 1 102
1 2 200
2 2 201
现在,对于表 1 中的每条记录,我想在表 2 上进行匹配记录,但仅限于最近的记录(批处理 ID 是连续的)。上述示例的结果将是:
Table1.ID Table1.Value1 Table2.Value2
1 A 102
2 B 201
问题很简单,如何限制与Table2的连接结果。 SO 上也有类似的问题,但找不到像我这样的问题。 MySQL 上的一个看起来类似: LIMITing an SQL JOIN
我对任何方法都持开放态度,尽管速度仍然是主要优先事项,因为它将是一个大数据集。
最佳答案
WITH Latest AS (
SELECT Table1ID
,MAX(BatchID) AS BatchID
FROM Table2
GROUP BY Table1ID
)
SELECT *
FROM Table1
INNER JOIN Latest
ON Latest.Table1ID = Table1.ID
INNER JOIN Table2
ON Table2.BatchID = Latest.BatchID
关于sql-server - 有限的 T-SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1027387/