mysql 内连接最大值

mysql inner join max

我需要你的帮助来处理内部连接和最大值。我已经研究了其他问题,但我无法解决...

我有三个表:

我只需要 select 来自 member_location 的记录,最高顺序组为 member_location.memberId。

示例:

Member
1, Jack Sparrow

Location
1, Mexico, 2
2, Punta Cana, 3
3, Cuba, 1

member_location
1, 1, 3
1, 1, 2
1, 1, 1

在 member_location 我有同一个成员的 3 条记录,我的查询需要得到 member_location 的第二行 (1, 1, 2) 因为位置 2 的顺序是最伟大的.

我试试:

select ml.memberId, ml.locationId, max(l.order)
from member_location ml inner join
     location l
     on ml.locationId=l.id
group by ml.memberId;

result: 1,1,3 -顺序没问题但是locationId没有。

我也试试:

select ml.locationId, ml.memberId
from member_location ml inner join
     (select id, max(order) from location) l
     on ml.locationId = l.id
group by ml.memberId;

在响应中我收到了第一个位置的记录。

我想也许这就是你想要的:

select ml.memberId, ml.locationid
from member_location ml 
inner join location l on ml.locationId = l.id
where l.order = (
    select max(order) max_order 
    from location
    join member_location on location.id = member_location.locationid
    where member_location.memberid = ml.memberid
)

这将获得任何用户订单最高的位置;不限于一个。相关子查询确保 max(order) 仅应用于与用户相关的位置集(没有相关性,max(order) 可能是特定用户 member_locations 不包括的位置) .

如果您只需要特定用户的数据,您可以在查询末尾添加 where ml.memberId = ?

如果你只想往后一排,你可以使用order bylimit:

select ml.memberId, ml.locationId
from member_location ml inner join
     location l
     on ml.locationId=l.id
order by l.order desc
limit 1;