Sql 用join计数

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

我想知道哪个播放列表中有超过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 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;