【问题标题】:Data coalescence between two tables两个表之间的数据合并
【发布时间】:2014-04-10 00:52:32
【问题描述】:

我已经尝试破解这个难题几个小时了,但我无法弄清楚需要哪种查询代码组合才能获得我正在寻找的确切结果。

我有两张桌子:

音乐和播放列表

音乐字段:

ID(主要)、Track_Name、File_Path、Date_Added、艺术家、专辑

播放列表字段:

PID、ID(与音乐的多对一关系)、Number_of_Plays

我正在尝试为 Music 中的每个 ID 合并所有播放列表中的所有记录,然后对 Number_of_Plays 字段求和

这是我所得到的:

Select Music.ID, Music.Track_Name, Playlists.PID From Music
Join Playlists On Music.ID = Playlists.ID
Where Playlists.ID In (
Select ID From Playlists
Group By ID
Having Count(Number_of_Plays) > 1)

这产生的唯一东西是一个按 ID 排序的列表,其中包含多个播放次数的记录。我已经能够弄清楚问题的后半部分,其中将所有播放列表中歌曲的播放次数加在一起,但不知道如何不显示 Number_of_Plays 等于 1 的那些记录。这是我发现的查询后半部分需要什么:

select PID, ID, sum(Number_of_Plays) As Total from Playlists
group by PID, ID LEFT(`ID`,11)
order by PID

这会根据 ID 的值组合 Number_of_Plays 字段,但不会删除仅包含 1 次播放的记录。在过去的 45 分钟里,我一直在尝试以某种方式组合这两个查询,但除了语法错误消息,我什么也没得到。

【问题讨论】:

    标签: mysql sql sql-server join


    【解决方案1】:

    我设法弄明白了:

    Select Music.ID, Music.track_name, Playlists.PI, sum(Playlists.Number_of_Plays) As Total_Plays From Music
    Join Playlists On Music.ID = Playlists.ID
    Group By Playlist.ID, LEFT('ID', 11) Having Count(Playlist.ID) > 1
    

    这产生了一个结果集,其中包含按 ID 排序的记录并汇总了播放次数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多