如果我一张表里的数据都是一样的,怎么更新前10行的数据没有主键也没法用where有什么办法能更新吗

解决方案 »

  1.   

    update a set xx=xx
    from (select ROW_NUMBER() over(order by getdate()) as no,* from tb) a
    where no<11
      

  2.   


    RowNumber() --行号或者 使用临时表都可以
      

  3.   

    DECLARE @T TABLE(COL NVARCHAR(10))
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST'
    INSERT @T SELECT 'TEST';
    WITH    TMP
              AS ( SELECT TOP 10
                            *
                   FROM     @T
                 )
        UPDATE  TMP
        SET     COL = 'TESTNEW'
    SELECT  *
    FROM    @T
    /*
    COL
    ----------
    TESTNEW
    TESTNEW
    TESTNEW
    TESTNEW
    TESTNEW
    TESTNEW
    TESTNEW
    TESTNEW
    TESTNEW
    TESTNEW
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST
    TEST(23 row(s) affected)
    */
      

  4.   

    用TOP 10不可以吗?update X set AAA='BBB'
    FROM (select TOP 10 * from T)X
      

  5.   


    update top(10) TABLE set TABLE.COLUMN='VALUE'
      

  6.   

     row_number() over( order by getdate()) 
      

  7.   

    不写别名的话一样的
    UPDATE TOP (10) [表名] SET [列名]=''