我的SQL表中有一对多的关系,一部电影可以有很多播出:
电影 - > movie_id,title,...其他字段
播出 - > movie_id,date_time,channel_id
所以我想根据电影ID返回一行,并返回内联在date_time上排序的顶部播出。
这是我到目前为止所做的,但它不起作用。
SELECT m.movie_id, m.title, next_airing.date_time, next_airing.channel_id
FROM movies m
LEFT JOIN (
SELECT *
FROM movie_airings
ORDER BY date_time DESC
) next_airing
ON next_airing.movie_id=m.movie_id
WHERE m.movie_id = 2
这将返回movie_airings中附加了电影详细信息的每一行:
movie_id title date_time channel_id 1 some title 1-11-2011 3 1 some title 2-11-2011 4 1 some title 3-11-2011 1
我哪里错了?如果我在内部查询中使用GROUP BY,我可以让它返回最后一次未排序的播出,但是无法让它返回顶部排序播出,因为ORDER BY和GROUP BY似乎不起作用。
你能帮忙吗?
答案 0 :(得分:1)
SELECT m.movie_id, m.title, next_airing.date_time, next_airing.channel_id
FROM movies m
LEFT JOIN (
SELECT *
FROM movie_airings
ORDER BY date_time DESC
) next_airing
ON next_airing.movie_id=m.movie_id
WHERE m.movie_id = 2
LIMIT 1