Обновить все записи - без условий - PullRequest
1 голос
/ 05 января 2012

изменить все [Названия] таблицы sql без каких-либо условий

Я использовал цикл, но не знаю, как повлиять на все строки в операторе обновления

это должно быть легко

что-то вроде:

WHILE @counter < 89 
BEGIN

    Update Products 
        SET Title = ('Product ' + @counter) 
        Where Title LIKE ''
    SET @counter = @counter + 1 ;
END 

SELECT Title FROM Products

Ответы [ 5 ]

4 голосов
/ 05 января 2012
Update Products 
    SET Title = ('Product ' + cast(@counter as varchar)) ;

Обновляет все строки с одинаковым значением

НО

, если вам нужны различные числа с автоматическим перечислением, попробуйте это:

Update Products SET 
  Title = ('Product ' + cast(@counter as varchar)), 
  @counter = @counter+1 ;

Это определенно работает, попробуйте это

CREATE table t (a VARCHAR(100))

INSERT t VALUES('a')
INSERT t VALUES('a')
INSERT t VALUES('a')
INSERT t VALUES('a')


DECLARE @counter INT = 0

UPDATE t SET a = 'aaa'+CAST(@counter AS VARCHAR), @counter = @counter+1

SELECT * FROM t

Выход

a
----
aaa1
aaa2
aaa3
aaa4
3 голосов
/ 05 января 2012

Попробуйте следующий запрос:

create table #T (id int identity (0,1), Title varchar(10))

INSERT INTO #T (Title) VALUES ('')
INSERT INTO #T (Title) VALUES ('')
INSERT INTO #T (Title) VALUES ('')
INSERT INTO #T (Title) VALUES ('')
INSERT INTO #T (Title) VALUES ('')
INSERT INTO #T (Title) VALUES (NULL)
INSERT INTO #T (Title) VALUES ('xxxxxx')

Update sub
set
Title = 'Product ' + cast(cntr as varchar)
from
(select Title, row_number() OVER (PARTITION BY ISNULL(Title,'') ORDER BY id ASC) as cntr from #T) sub
where ISNULL(Title,'') = ''


select * from #T
2 голосов
/ 05 января 2012

Просто удалите раздел Where из запроса, и все будет обновлено.

2 голосов
/ 05 января 2012

просто удалите условие where:

Update Products 
    SET Title = ('Product ' + @counter) ;
0 голосов
/ 05 января 2012
--Test data
    DECLARE @Products TABLE(Title Varchar(20))

INSERT INTO @Products (Title) VALUES ('')
INSERT INTO @Products (Title) VALUES ('')
INSERT INTO @Products (Title) VALUES ('')
INSERT INTO @Products (Title) VALUES ('')
INSERT INTO @Products (Title) VALUES ('')

--Query    
DECLARE @counter int
SET @counter = 0

UPDATE p
SET Title = ('Product ' + CAST(@counter as varchar)), @counter = @counter+1
FROM @Products   p

SELECT Title FROM @Products
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...