如何通过选择一个来消除SQL中的重复行

时间:2019-02-08 00:34:12

标签: sql tsql

我有一个数据库,其中有[Session][SessionAsset]表。

SessionAsset有一个我要获取的ThumbnailUrl

有两个SessionAssets与一个Session相关联。

仅服用其中ThumbnailUrl个中的1个是最好的方法?如果我将Session上的SessionAssetSessionId(主键)一起加入,那么将有重复的行。

2 个答案:

答案 0 :(得分:1)

假设SessionAssets中的两个记录都具有相同的ThumbnailUrl,一种解决方案是使用选择不同SessionId/ThumbnailUrl元组的子查询。

SELECT s.*, sa.ThumbnailUrl
FROM Session s
INNER JOIN ( -- or maybe LEFT JOIN ?
    SELECT DISTINCT SessionID, ThumbnailUrl FROM SessionAssets
) sa ON sa.SessionId = s.SessionID

如果ThumbnailUrl不同,而您只想获得其中之一,那么您可能想使用聚合:

SELECT s.*, sa.ThumbnailUrl
FROM Session s
INNER JOIN (
    SELECT SessionID, MAX(ThumbnailUrl) ThumbnailUrl 
    FROM SessionAssets 
    GROUP BY SessionID
) sa ON sa.SessionId = s.SessionID

答案 1 :(得分:0)

通过[SessionId]加入两个表,并使用DISTINCT关键字消除重复的[ThumbnailUrl]

SELECT DISTINCT ThumbnailUrl
FROM SessionAsset sa
JOIN Session s on s.SessionId = sa.SessionId