我有一个表 tv_programs(prog_id、channel_id、prog_name、prog_start_date、prog_end_date)
对于每个频道,我希望在现在播出的节目之后开始下一个节目。所以每个通道一行。
我试过了
Select * from tv_programs where prog_start_date > NOW()
这给了我从现在开始所有频道的所有节目。
我有一个表 tv_programs(prog_id、channel_id、prog_name、prog_start_date、prog_end_date)
对于每个频道,我希望在现在播出的节目之后开始下一个节目。所以每个通道一行。
我试过了
Select * from tv_programs where prog_start_date > NOW()
这给了我从现在开始所有频道的所有节目。
SELECT *
FROM tv_programs
WHERE prog_start_date > NOW()
GROUP BY channel_id # for each channel
ORDER BY prog_start_date ASC # order by this channel's start time
有什么好处吗?
你必须GROUP BY channel_id
所以最后的查询:
SELECT *
FROM tv_programs
WHERE prog_start_date > NOW()
GROUP BY channel_id
ORDER BY prog_start_date ASC
将返回程序以更快地为每个频道启动