JBo*_*one 12 mysql nested join greatest-n-per-group
SELECT * FROM A
JOIN B
ON B.ID = A.ID
AND B.Time = (SELECT max(Time)
FROM B B2
WHERE B2.ID = B.ID)
Run Code Online (Sandbox Code Playgroud)
我试图在MYSQL中加入这两个表.不要注意,如果ID是唯一的,那么我不会尝试这样做.我浓缩了真实的解决方案来绘制简化的图片.我试图在特定记录的最大日期抓住并加入表B. 此过程由SSIS包运行,并且说B2.ID是未知列.我经常在MSSQL中做这样的事情并且是MYSQL的新手.任何人有任何指针或想法?
Bil*_*win 28
我以不同的方式执行此类查询,使用排除连接而不是子查询.您想要找到具有给定ID的最大时间的B行; 换句话说,没有其他行具有更大的时间和相同的ID.
SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
LEFT OUTER JOIN B AS B2 ON B.ID = B2.ID AND B.Time < B2.Time
WHERE B2.ID IS NULL
Run Code Online (Sandbox Code Playgroud)
您还可以使用派生表,该表应该比使用相关子查询更好.
SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
JOIN (SELECT ID, MAX(Time) AS Time FROM B GROUP BY ID) AS B2
ON (B.ID, B.Time) = (B2.ID, B2.Time)
Run Code Online (Sandbox Code Playgroud)
PS:我添加了greatest-n-per-group标签.这种类型的SQL问题每周都会出现在Stack Overflow上,因此您可以按照该标记查看数十个类似问题及其答案.