代码之家  ›  专栏  ›  技术社区  ›  Bryan

删除SQL循环

  •  2
  • Bryan  · 技术社区  · 15 年前

    我只想为每个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)
    
    3 回复  |  直到 10 年前
        1
  •  2
  •   A.Rashad    15 年前

    在Oracle中:

    DELETE from CLIENTS
    where CLIENT_ID = 'xxx' and
    rownum > 1000
    
        2
  •  2
  •   edsoverflow    15 年前

    这是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
    
        3
  •  1
  •   aaaa bbbb    15 年前

    我认为“在Oracle中”的答案将删除最新条目。小心那个!