2014-11-14 2 views
13

Как я могу обновить только одну запись на db?SQL Server, как обновить только одну строку в базе данных?

Таблица:

name  name1  name2 
---------------------------- 
xx   xy   xz 
xx   xx   xx 
xx   xx   xx 
xx   xx   xx 
xy   xx   zz 

Обновление запроса:

UPDATE table1 
SET name2 = '01' 
WHERE name1='xx' 

, но мне нужно обновить только одну строку для каждого времени

+0

Просто укажите первичный ключ таблицы в предложении 'WHERE' - единственное, что ** однозначно ** ссылается и идентифицирует ** каждую строку ** в вашей таблице .... –

+0

Невозможно в вашем случае. – Rahul

+0

Почему вы не добавляете Первичный ключ в свой стол? – Mukund

ответ

33

вы можете использовать ROWCOUNT

SET ROWCOUNT 1 

UPDATE table1 
SET name2 = '01' 
WHERE name1='xx' 

SET ROWCOUNT 0 

или вы можете использовать обновление верхней

UPDATE TOP (1) table1 
SET name2 = '01' 
WHERE name1='xx' 
+1

Не могли бы вы добавить примечание о том, почему 'TOP (1)' не написано как 'TOP 1'? :) – Zero3

+0

Скобки необязательны только в операторах SELECT. Причина для этого - обратная совместимость. –

+0

@s_f Не уверен, что это правда, как SSMS 2016, не позволит мне это сделать – sparkyShorts

-4

, если вы хотите обновить одну строку за раз, пожалуйста, попробуйте добавить Столбец Identity для вашей таблицы, чтобы идентифицировать каждую строку.

+0

что-то заказать по названию? – Klapsius

+0

Я не думаю, что этот порядок поможет вам, потому что есть больше строк, удовлетворяющих условию. – Dotnetter

-4

Вы можете просто добавить LIMIT 1 в конце запроса.

+0

'Неверный синтаксис рядом с 'LIMIT'.' – Zero3

+0

Сервер Sql не поддерживает LIMIT – Luca

Смежные вопросы