2012-02-28 60 views
1

我们正试图限制每天一个IP地址对一些摇滚视频的投票。我已经从堆栈溢出的另一个问题开始了这个查询。但是,每天只需要每个IP地址一次投票就可以每天返回一张投票。我该怎么做?每个IP地址每天如何获得一个不同的记录?

;with cte as 
(
    select 
    *, 
    row_number() over(partition by datediff(d, 0, created) order by created desc) as rn 
    from rock_vote 
) 
select cte.VideoId, cte.IPAddress, o.BandName, cte.Created 
from cte 
inner join rock_video o on cte.videoId = o.videoid 
where rn = 1 
order by created desc 

回答

1
;with cte as 
(
    select 
    *, 
    row_number() over(partition by IPAddress, datediff(d, 0, created) 
    -------------------------------^^^^^^^^^^^ 
    order by created desc) as rn 
    from rock_vote 
) 
select cte.VideoId, cte.IPAddress, o.BandName, cte.Created 
from cte 
inner join rock_video AS o on cte.videoId = o.videoid 
where cte.rn = 1 
order by o.created desc; 
+0

谢谢Aaron。爱烧杯的化身。 – 2012-02-29 01:21:07

相关问题