没有主键,我只要删除前N条记录。n数值大概在千万级别的。

解决方案 »

  1.   

    SELECT IDD=IDENTITY(INT,1,1),* INTO #T FROM TB DELETE #T WHERE IDD NOT IN (SELECT TOP N IDD FROM #T)DROP TABLE TBINSERT TB SELECT * FROM #T 去除IDD列
      

  2.   

    delete from tb where id in (select top n id from tb)
      

  3.   


    SELECT IDD=IDENTITY(INT,1,1),* INTO #T FROM TB DELETE #T WHERE IDD NOT IN (SELECT TOP N IDD FROM #T) DROP TABLE TB INSERT TB SELECT A,B,C,D..... FROM #T
      

  4.   


    SELECT IDD=IDENTITY(INT,1,1),* INTO #T FROM TB DELETE #T WHERE IDD NOT IN (SELECT TOP N IDD FROM #T) DELETE  TB INSERT TB SELECT * FROM #T
      

  5.   

    弄错了,是DELETE不能是DROP 
      

  6.   

    我个人思路,先查出前N条记录,然后在删除!
    SELECT TOP 10 *
    FROM table WHERE (ID NOT IN
               (SELECT TOP 10 ID
              FROM table))二:在删除:delete from (SELECT top 10 *
    FROM dbo.table
    WHERE (NID NOT IN
               (SELECT TOP 10 NID
              FROM dbo.table)))
      

  7.   


    SET ROWCOUNT 3 --把3改成你要删除的条数
    delete from tbSET ROWCOUNT 0
      

  8.   

    我的也可以换种思路,删除指定行!SELECT TOP 1 *
    FROM AssoInfo2
    WHERE (ID NOT IN
               (SELECT TOP 2 ID
              FROM AssoInfo2)),此句指向第三行 
      

  9.   

    ---2005的用法
    set rowcount ndelete * from tbset rowcount 0
      

  10.   


    2000去掉*试下
    delete from tb
      

  11.   

    谢谢各位,我用的是SQLite,
    rowcount 的方法似乎行不通的
      

  12.   


    SQLite error
    near "(": syntax error
      

  13.   

    不能啊,我在vs调试下出来的,SQLite我也没接触过
      

  14.   

    呵呵,SQLite支持的SQL语句我不太清楚。
    所以正在一个一个方法的试
      

  15.   

    用MYSQL的试试,把Top
    改成limit 10