所以在这里。 我有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;
答案 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)。这件作品高度依赖数据库。