我有这三个表来存储相册的标签。这是架构
表1:相册
Album_ID
Album_Name
表2:AlbumTags
TAG_ID
Tag_Name
表3:AlbumTagBridge
ID
TAG_ID
Album_ID
能够提供如下结果集的最有效的SQL是什么:
Tag_Name |计数
标签1 | 19个
标签2 | 3
标签3 | 17
答案 0 :(得分:2)
SELECT dbo.AlbumTags.Tag_Name,
COUNT(dbo.AlbumTagBridge.Tag_Id) AS Cnt
FROM dbo.AlbumTagBridge
INNER JOIN dbo.AlbumTags ON dbo.AlbumTagBridge.Tag_Id = dbo.AlbumTags.Tag_ID
GROUP BY dbo.AlbumTags.Tag_Name
答案 1 :(得分:0)
Select Tag_Name, COUNT(AlbumTagBridge.ID)
From AlbumTags
Join AlbumTagBridge USING(Tag_ID)
Group By Tag_Name
按AlbumTags.Tag_ID, Tag_name
进行分组可能会稍微便宜一些,具体取决于你的索引和c(特别是如果你的SQL引擎不是那么聪明;-),但是因为你没告诉我们你的指数也没关系你的引擎这是我们能做的最好的事情。