1

我有一个作业设置,当前从不包含唯一索引的表中选择记录。我意识到这可以通过在表和相关列上放置一个索引来解决,但是在这种情况下出于测试目的,我需要删除索引,然后执行一个选择,这也将删除基于 2 列的重复项:

SELECT DISTINCT [author], [pubDate], [dateadded]
FROM [Feeds].[dbo].[socialPosts]
WHERE CAST(FLOOR(CAST(dateadded AS float)) AS datetime) > 
                               DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE() - 2), 0)  
AND CAST(FLOOR(CAST(dateadded AS float)) AS datetime) < 
                               DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)

这会选择前一天的所有记录,我想根据作者和发布日期对记录进行重复数据删除。这可能是一个帖子选择或之前完成,但我们的想法是找出它是否可以在一个选择中完成。

4

1 回答 1

1

您可以GROUP BY在列上使用 a 和任何聚合函数dateadded来获得唯一的author, pubdate结果。

SELECT  [author]
        ,[pubDate]
        ,MAX([dateadded])
 FROM   [Feeds].[dbo].[socialPosts]
 WHERE  CAST(FLOOR(CAST(dateadded AS float)) AS datetime) >  dateadd(day,datediff(day, 0, getdate()-2), 0)  
        AND CAST(FLOOR(CAST(dateadded AS float)) AS datetime) < dateadd(day,datediff(day, 0, getDate()), 0)
 GROUP BY 
        [author]
        , [pubdate]
于 2012-07-09T19:48:30.087 回答