如何只查找两个表中的重复记录

时间:2019-02-01 19:24:26

标签: sql sql-server

我想这两个表之间识别重复的记录。重复的记录将具有相同的播放列表名称和曲目ID,但具有不同的播放列表ID。我只需要确定重复记录的第二个即可。因此,有一个名为Music为1。轨道ID播放列表这是播放列表编号1的部分有一个名为音乐也有1轨道ID另一播放列表,但这种附加播放列表ID 8.我只是想找出音乐,1,8纪录。

我能够识别重复的记录,但是不确定如何提取播放列表名称。我想我可能需要使用EXISTS子句和MAX聚合函数,但是不确定并且不知道从哪里开始。我当前的代码如下。

DefaultCredentialsError

我正在尝试获得类似于以下结果的内容。因此,例如,先前显示为NULL轨道ID有声读物,但具有不同的播放列表ID。结果应该只是捕捉下一个播放列表名称/轨道ID(即有声读物/ NULL)匹配,其具有不同的播放列表ID(即,8)。

GOOGLE_APPLICATION_CREDENTIALS

1 个答案:

答案 0 :(得分:1)

您必须使用聚集函数选择要显示的重复行的值

SELECT
    P.Name AS [Playlist Name]
    ,MAX(P.PlaylistId)   
    ,PT.TrackId AS [Track ID]
FROM PlaylistTrack AS [PT]
FULL JOIN Playlist AS [P]
    ON PT.PlaylistId = P.PlaylistId
GROUP BY P.Name, PT.TrackId 
HAVING COUNT(CONCAT(P.Name,PT.TrackId)) > 1
ORDER BY P.Name

请注意MAX(P.PlaylistId),而不是P.PlaylistId

对于NULL的值,请尝试切换到INNER JOIN

Here you can find a list of the available functions

相关问题