如何从子表加入第一个结果

时间:2011-12-05 18:07:31

标签: java sqlite

我的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似乎不起作用。

你能帮忙吗?

1 个答案:

答案 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