mysql在多对多关系条件下排序

时间:2018-04-17 10:30:21

标签: mysql

我有两张桌子

groups:
    id          : integer
    group_title : string

group_sessions:
    id          : integer
    group_id    : integer
    start_time  : timestamp

我需要根据即将推出的最新会话start_time对群组进行排序。例如,A组明天有下一个会议,B组今天有下一个会议。然后B组应该先到。这就是我写的,但显然它不起作用

select g.id, g.group_title
from groups g
left join (
    select group_id, MIN(start_time) as min_session_time
    from group_sessions
    where start_time > now()
    group by group_id
) s on g.id = s.group_id
order by min_session_time asc

1 个答案:

答案 0 :(得分:0)

首先,你需要一个INNER JOIN,而不是LEFT JOIN。 其次,你不需要聚合,比如MIN。

SELECT g.id, g.group_title, gs.start_time
FROM groups g
    INNER JOIN group_sessions gs ON gs.group_id = g.id
WHERE gs.start_time > NOW()
ORDER BY gs.start_time