我们有两张桌子:
表A
id | name
1 x
2 y
表B
foreign_key | value | external
1 1 60
1 2 50
2 3 80
2 4 90
所需的结果是JOIN
,如下所示:
id | name | external
1 x 50
2 y 90
即,对于A
中的每一行,我们从external
得到相应的B
,其中value
是给定id
的最大值。
到目前为止我所拥有的是:
SELECT
A.`id`,
A.`name`,
B.`external`
FROM `A`
LEFT JOIN `B`
ON A.id = B.foreign_key
GROUP BY id
这显然会返回遇到的第一个B.external
而不是具有最高value
的{{1}}:
id | name | external
1 x 60
2 y 80
有没有办法实现这一点,最好不使用子查询?
答案 0 :(得分:1)
不确定为什么不想要子查询,但相关的子查询看起来更简单
select id, name,
(Select external
from TableB B where A.id = B.foreign_key Order by Value desc Limit 1 )
From TableA A
如果您想使用JOIN
实现此目的,那么您可能需要加入TableB
两次