使用CASE在MySQL中对加权计数进行分组

时间:2015-02-11 03:47:33

标签: mysql outer-join

我正在使用MySQL Server Management Studio,并且正在尝试为歌曲分类创建加权总计。这是我的SELECT语句:

SELECT
     TSongs.intSongID
    ,TSongs.strSongName
    ,CASE
        WHEN TUFS.intSortOrder = 1 THEN 5
        WHEN TUFS.intSortOrder = 2 THEN 3
        WHEN TUFS.intSortOrder = 3 THEN 1
        ELSE                            0
     END AS intFavoriteSongCount
FROM
     TSongs
        LEFT OUTER JOIN TUserFavoriteSongs AS TUFS
        ON( TSongs.intSongID = TUFS.intSongID )
GROUP BY
     TSongs.strSong
    ,TSongs.intSongID
    ,TUFS.intSortOrder
ORDER BY
     intFavoriteSongCount

权重如下:每个"用户"在数据库中有喜欢的歌曲,按intSortOrder排序。理想情况下,此SELECT语句的输出将显示每首歌曲一次,以及歌曲的组合加权总和的总和。就像现在一样,它会多次显示每首歌曲,每次播放一次"用户"最喜欢的名单。

这是一张图片,用于解释当前的问题:

Current, problematic table display.

我怎么能阻止这种情况发生?

1 个答案:

答案 0 :(得分:0)

选择      TSongs.intSongID     ,TSongs.strSongName     ,案件         当TUFS.intSortOrder = 1那么5         当TUFS.intSortOrder = 2那么3         当TUFS.intSortOrder = 3那么1         ELSE 0      结束为intFavoriteSongCount 从      TSongs         LEFT OUTER JOIN TUserFavoriteSongs AS TUFS         ON(TSongs.intSongID = TUFS.intSongID) 通过...分组      TSongs.intSongID 订购      intFavoriteSongCount