【问题标题】:SQL - Select the playlist with the most moviesSQL - 选择电影最多的播放列表
【发布时间】:2013-01-12 15:06:18
【问题描述】:

我正在努力解决一个问题。

我有两张桌子:

CREATE TABLE Playlist(
    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
);



CREATE TABLE PlaylistMovies(
    mid INTEGER FOREIGN KEY REFERENCES Movie(movieid) ON DELETE CASCADE,
    pid INTEGER FOREIGN KEY REFERENCES Playlist(id) ON DELETE CASCADE,   
    PRIMARY KEY (mid, pid)
);

我想找到电影最多的播放列表(包括 mid`s)。

如何解决这个问题?

【问题讨论】:

    标签: sql database hsqldb


    【解决方案1】:

    请尝试一下:

    查询:

    select top 1 pl.pid, p.name,
             count(pl.mid) as count_id
      from playlistmovies pl
      left join playlist p
      on p.id = pl.pid
      group by pl.pid, p.name
      order by count_id desc
    ;
    

    结果:

    | PID | NAME | COUNT_ID |
    -------------------------
    |   1 |   p1 |        5 |
    

    【讨论】:

    • @maximus 问题是如果您有两个播放列表的最大电影数相同...您想返回什么?
    • 只有一个ID?好好想想……P1 里面有 4 部电影,P2 里面有 4 部电影,最大数量是 4。你只想要 P1 还是两者都想要?对我来说,同时返回 P1、P2 是有意义的 :) 如果您选择 P1,那么 P2 可以说 嘿,我也有一个最大计数... :D
    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多