嵌套SQL查询验证

时间:2017-01-28 19:29:57

标签: sql

所以在这里。 我有3张桌子: 歌曲(标题,艺术家,流派) 播放列表(名称,用户名,用户城市) 作文(PlaylistName,SongTitle)

以下参考资料: 播放列表名称 - >名称 SongTitle - >标题

问题是: 找到在其播放列表中具有REM写入的最多歌曲的用户的名称和用户名。

现在我想问一下我的解决方案是否合法:

更新 我通过这样做找到了一种更清洁的方式:

Select Name, UserName
    From (Select Name, UserName, Max(cnt)
           From (Select Name, UserName, count(*) as cnt 
                 From PlayList, Composition, Song
                 Where Name = PlaylistName and SongTitle = Title 
                 and Artist = 'REM' 


                 Group by Name 
                )sub
           )su;

1 个答案:

答案 0 :(得分:0)

使用join s!

select pl.username, count(*) as num_REM
from playlist pl join
     composition c
     on c.playlistname = p.name join
     song s
     on pl.songtitle = s.title
where s.artist = 'REM'
group by pl.username
order by count(*) desc;

您可以使用limit为用户提供最多的歌曲。

如果你想要所有这些用户,最简单的方法是TOP WITH TIES(在SQL Server和Sybase中),TOP(在MS Access中),窗口函数(几乎在任何数据库中),变量(MySQL) ),或复杂的子查询(MySQL,SQLite)。这件作品高度依赖数据库。