我在Table1.ID上有Table1和Table2相关。给定的Table1.ID可以有零个或多个Table2记录。我有一个视图,我想获得Table2.Value,其中Table2.ID是给定Table1.ID的最大值。一位朋友建议派生表,但这需要from子句中的子查询,MySQL不喜欢这样。有没有其他方法可以做到这一点?我尝试设置一个辅助视图来取代子查询,但它看起来很慢。我也尝试使用having子句来测试Table2.ID = MAX(Table2.ID),但它不识别该列,除非我把它放入组中,这会搞砸其他所有内容。
答案 0 :(得分:0)
SELECT t1.*, t2a.*
FROM Table1 t1
LEFT JOIN Table2 t2a
ON (t1.table1_id = t2a.table1_id)
LEFT JOIN Table2 t2b
ON (t1.table1_id = t2b.table1_id AND t2a.table2_id < t2b.table2_id)
WHERE t2b.table2_id IS NULL
AND t1.table1_id = ?;