如何使用选择查询更新前(20)条记录

时间:2018-07-10 17:20:52

标签: sql sql-server tsql

如何使用Select查询更新前20个记录?

Table1(表记录在for循环中)有60条记录。一次,我想基于表column =“ TEXT”获得前20条记录,然后用column =“ TEXT1”更新这20条记录。

在那之后,我将选择接下来的20条记录(21-40),并再次如上所述进行更新。

我正在使用以下查询,但是它将在接下来的20(21-40)条记录不起作用后更新前20条记录。

2 个答案:

答案 0 :(得分:2)

Update tableName set Column = 'TEXT1' where column = 'TEXT'  ;

或者如果有条件的话进行更新...

UPDATE tablename set column = case when column = 'TEXT' then 'Text1'
                                   else column = 'OtherText' then 'Text1Other'
                                   else column = 'StillOtherText' then 'Text1Other2' end
WHERE column in ('TEXT','OtherText','StillOtherText');

答案 1 :(得分:1)

一种方法是使用while循环检查“ TEXT”的存在。如果检查返回true,那么将选择前20个主键作为更新语句的一部分。

WHILE EXISTS (SELECT * 
                FROM Table1 
               WHERE yourcolumn = 'TEXT')
BEGIN
UPDATE Table1
   SET yourcolumn = 'TEXT1'
 WHERE primarykey IN (
                       SELECT TOP 20 primarykey
                         FROM Table1
                        WHERE yourcolumn = 'TEXT'
                     )
END