如何更新400强?

9 sql t-sql sql-server sql-update

我想更新数据库表中的前400行.伪SQL在下面,我该怎么做?

UPDATE top (400) db.dbo.tbl
SET column1 = 2
WHERE column2 = 1
  AND column1 is null
Run Code Online (Sandbox Code Playgroud)

Nei*_*l N 9

 UPDATE db.dbo.tbl SET column1 = 2 WHERE
 primaryID IN (
   SELECT TOP (400) primarkyID FROM db.dbo.tbl
   WHERE column2 = 1 AND column1 IS NULL
 )
Run Code Online (Sandbox Code Playgroud)

但我不喜欢这个,因为没有办法保证前400名,你可能想要添加其他类型的标准.甚至是子命令的顺序.


HLG*_*GEM 5

你如何确定前400名?由于没有任何指令,因此没有任何人保证始终会选择相同的集合,因此可以更新错误的记录.


Qua*_*noi 5

WITH    q AS
        (
        SELECT  TOP 400 *
        FROM    db.dbo.tb
        WHERE   column2 = 1
                AND column1 is null
        ORDER BY
                column3 -- choose your order!
        )
UPDATE  q
SET     column2 = 2
Run Code Online (Sandbox Code Playgroud)