Sql 用join计数
我想知道哪个播放列表中有超过2首歌曲。该语句有效,但我需要播放列表的名称和所显示歌曲的计数()。我想我必须使用连接,但我不知道该如何工作。 有人能帮忙吗Sql 用join计数,sql,oracle,Sql,Oracle,我想知道哪个播放列表中有超过2首歌曲。该语句有效,但我需要播放列表的名称和所显示歌曲的计数()。我想我必须使用连接,但我不知道该如何工作。 有人能帮忙吗 playlist table ++++++++++++++ id name playlist_songs table ++++++++++++++++++++ song_id playlist_id SELECT p.name FROM playlist p WHERE p.id in (SELECT s.playlist_id cou
playlist table
++++++++++++++
id
name
playlist_songs table
++++++++++++++++++++
song_id
playlist_id
SELECT p.name FROM playlist p
WHERE p.id in (SELECT s.playlist_id counter FROM playlist_songs s
group by playlist_id
having count(song_id)>2);
我想要播放列表的名称和歌曲的计数()
显示
这是使用JOIN
优于IN
谓词的优点之一:
SELECT
p.name,
COUNT(song_id) counter
FROM playlist p
INNER JOIN playlist_songs s ON p.id = s.playlist_id
GROUP BY playlist_id
HAVING COUNT(song_id) > 2;
尝试:-
这是SQL server语法,但应适用于Oracle。这是您需要的:
SELECT p.name as name, count(*) as counter
FROM playlist p left outer join playlist_songs s on (p.id = s.playlist_id)
GROUP BY p.name
HAVING count(*) > 2
请尝试:
SELECT a.name
FROM
playlist a INNER JOIN playlist_songs b
ON a.id = b.playlist_id
GROUP BY a.name
HAVING COUNT(*) >1
如果可能,请始终使用join
SELECT p.name play_list,count(s.song_id) total_songs
FROM playlist p
INNER JOIN playlist_songs s
ON p.id = s.playlist_id
GROUP BY p.name
HAVING COUNT(s.song_id) >= 2;
我读到这个问题:与join一起玩得开心;)
SELECT p.name play_list,count(s.song_id) total_songs
FROM playlist p
INNER JOIN playlist_songs s
ON p.id = s.playlist_id
GROUP BY p.name
HAVING COUNT(s.song_id) >= 2;