MySQL:JOIN表并根据另一列上的聚合函数从一行返回一列

时间:2016-11-18 17:52:31

标签: mysql sql

我们有两张桌子:

  • 表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

有没有办法实现这一点,最好不使用子查询?

1 个答案:

答案 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两次