不确定如何重写以下查询。我正在尝试将table_a连接到最新的table_b记录。目前仅测试一个ID,但可以添加table_a上的不同标准:
Select t.*
from table_a t
left join table_b d on d.id = T.id and d.MOD_DATE IN (SELECT MAX(mod_date) FROM table_b d2 WHERE d2.id = t.id)
where T.id = 123456
有什么建议吗?
答案 0 :(得分:1)
我认为你正在寻找类似的东西:
SELECT t.*
FROM table_a t
LEFT JOIN (
SELECT d.*
FROM table_b d
INNER JOIN (
SELECT id
, MAX(mod_date) mod_date_max
FROM table_b d2
GROUP BY id
) db
ON db.id = d.id
AND db.mod_date_max = d.mod_date
) d
ON d.id = T.id
WHERE T.id = 123456
请注意,您的where
子句会将left join
变为inner join
。
此外,如果您收到错误,请同时发布错误消息,而不仅仅是错误消息。
答案 1 :(得分:0)
我还发现使用以下查询可以实现相同的目的:
SELECT * FROM table_a t
WHERE id IN (
SELECT id
FROM (
SELECT id,MAX(MOD_DATE)
FROM table_b
WHERE id = 123456
GROUP BY id
)
)