Adr*_*ong 4 t-sql sql-server join limit
这应该很简单,但不知何故,我的大脑停止了工作.
我有两个相关的表:
表格1:
ID (PK), Value1
Run Code Online (Sandbox Code Playgroud)
表2:
BatchID, Table1ID (FK to Table 1 ID), Value2
Run Code Online (Sandbox Code Playgroud)
示例数据:
表格1:
ID Value1
1 A
2 B
Run Code Online (Sandbox Code Playgroud)
表2:
BatchID Table1ID Value2
1 1 100
2 1 101
3 1 102
1 2 200
2 2 201
Run Code Online (Sandbox Code Playgroud)
现在,对于表1中的每条记录,我想在表2中进行匹配记录,但只有最新的记录(批次ID是顺序的).以上示例的结果将是:
Table1.ID Table1.Value1 Table2.Value2
1 A 102
2 B 201
Run Code Online (Sandbox Code Playgroud)
问题很简单,如何用Table2限制连接结果.SO上有类似的问题,但找不到像我这样的东西.这是一个看起来类似的MySQL: 限制SQL JOIN
我对任何方法持开放态度,尽管速度仍然是主要优先事项,因为它将成为一个大数据集.
Cad*_*oux 10
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
Run Code Online (Sandbox Code Playgroud)