我有两张桌子
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
答案 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