这里有一个完整的、希望更有用的答案,它演示了示例数据及其产生的结果。请运行以下示例:
CREATE TABLE #band
(
BandId INT ,
BandName NVARCHAR(10)
);
CREATE TABLE #song
(
SongId INT ,
BandId INT ,
SongName NVARCHAR(10)
);
INSERT INTO #band ( BandId ,
BandName )
VALUES ( 1, 'Rockers' ) ,
( 2, 'Rappers' ) ,
( 3, 'Ravers' ) ,
( 4, 'Poppers' );
INSERT INTO #song ( SongId ,
BandId ,
SongName )
VALUES ( 1, 1, 'rock 1' ) ,
( 2, 1, 'rock 2' ) ,
( 3, 1, 'rock 3' ) ,
( 4, 2, 'rap 1' ) ,
( 5, 2, 'rap 2' ) ,
( 6, 3, 'rave 1' );
SELECT b.BandId ,
b.BandName ,
COUNT(s.SongId) Songs
FROM #band AS b
LEFT JOIN #song AS s ON s.BandId = b.BandId
GROUP BY b.BandId ,
b.BandName
HAVING COUNT(s.SongId) < 3;
DROP TABLE #band;
DROP TABLE #song;
生产:
BandId BandName Songs
4 Poppers 0
2 Rappers 2
3 Ravers 1