我只想为每个 clientid 保留 1000 个条目。下面的代码执行了我想要的操作,但不循环遍历 clientid,而是保留任何客户端的总数 1000。
有没有办法在sql中做到这一点?有人告诉我我需要一个光标,但我希望不需要。
DECLARE @ids TABLE ( id int )
DECLARE @clients TABLE ( clientid varchar(20) )
INSERT INTO @clients (clientid)
SELECT select distinct clientid FROM tRealtyTrac
INSERT INTO @ids (id)
SELECT top 1000 id FROM tRealtyTrac WHERE clientid in (select clientid from @clients)
DELETE trealtytrac WHERE id NOT IN (select id from @ids)
最佳答案
这是 SQL Server 2005 或更高版本吗?像这样的东西怎么样?
INSERT INTO @ids (id)
SELECT id FROM (
SELECT id, RANK() OVER (PARTITION BY clientid ORDER BY id) AS Rank FROM tRealtyTrac
) t
WHERE t.Rank <= 1000
关于sql - 删除SQL循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1174619/