新闻表根据一列删除重复值

时间:2016-09-24 17:20:04

标签: sql sql-server database

好的,所以我有一个名为NewsEvent的表,其中包含以下列:

  • NewsID
  • 事件ID
  • 用户ID
  • SameEvent

现在我只处理前3列,基本上我想做的是获取连接到同一事件的数字新闻,但问题是多个用户可以将某个新闻链接到一个事件,我只需要这个新闻只计算一次。

假设有ID为1的事件,有5个新闻和3个用户将这5个新闻与该事件相关联,使用我的查询我将获得与该事件相关的15个新闻的结果。

现在查询本身是正确的,但是如何修改它只计算一次新闻,并根据新闻列计算时删除重复值,这样它返回的结果是5,而不是15。

我的查询如下:

Select count(NE.NewsID) as [Number of news linked to the event], NE.EventID as EventID
From NewsEvent NE
Group By NE.EventID  
Order By Count(NE.NewsID) Desc

我正在使用SQL Server 2014

2 个答案:

答案 0 :(得分:2)

我想你只想要count(distinct)

Select count(distinct NE.NewsID) as [Number of news linked to the event],
       NE.EventID as EventID
From NewsEvent NE
Group By NE.EventID  
Order By Count(NE.NewsID) Desc;

答案 1 :(得分:1)

嗨,您可以使用以下查询,

  

没有重复(不同的值)

Select count(distinct NE.NewsID) as [Number of news linked to the event], NE.EventID as EventID
From NewsEvent NE
Group By NE.EventID  
Order By Count(NE.NewsID) Desc
  

仅重复

Select count(NE.NewsID) as [Number of news linked to the event], NE.EventID as EventID
From NewsEvent NE
Group By NE.EventID  
Order By Count(NE.NewsID) Desc having count(NE.NewsID) > 1