如何使用Select查询更新前20个记录?
Table1(表记录在for循环中)有60条记录。一次,我想基于表column =“ TEXT”获得前20条记录,然后用column =“ TEXT1”更新这20条记录。
在那之后,我将选择接下来的20条记录(21-40),并再次如上所述进行更新。
我正在使用以下查询,但是它将在接下来的20(21-40)条记录不起作用后更新前20条记录。
答案 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