假设有两个表:
表 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
:
id | name | external
1 x 60
2 y 80
有没有办法实现这一点,最好不使用子查询?
最佳答案
不知道为什么不需要子查询,但相关子查询对我来说看起来更简单
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
两次
关于MySQL:连接表并根据另一列上的聚合函数从一行返回一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40683199/