Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как обновить несколько строк одним запросом MS SQL? / 9 сообщений из 9, страница 1 из 1
05.04.2020, 17:20
    #39944124
eliasum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
Здравствуйте! Есть таблица с двумя строчками:
id Lat Lng
1 55.75393 37.620795
2 55.75393 37.620695

Мне нужно обновить или одну строку или обе одновременно, причем в каждом случае поля Lat и Lng обновляются вместе. Написал запрос T-SQL:
Код: sql
1.
INSERT INTO MyGMap (id, Lat, Lng) VALUES (1,'1','2'), (2,'3','4') ON DUPLICATE KEY UPDATE id = VALUES(id), Lat=VALUES(Lat), Lng=VALUES(Lng)



Выдает ошибку, что "неверный синтаксис около ON", а так же подчеркивает VALUES, id, Lat и Lng. Подскажите, что неправильно?
...
Рейтинг: 0 / 0
05.04.2020, 17:28
    #39944126
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
eliasum
Выдает ошибку, что "неверный синтаксис около ON", а так же подчеркивает VALUES, id, Lat и Lng. Подскажите, что неправильно?
Это вы в каком справочнике по T-SQL нашли?
Какой ещё ON DUPLICATE KEY?

Вот справочнико по UPDATE: https://docs.microsoft.com/ru-ru/sql/t-sql/queries/update-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
05.04.2020, 22:09
    #39944154
baracs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
alexeyvg
Это вы в каком справочнике по T-SQL нашли?
Какой ещё ON DUPLICATE KEY?
Это в MySQL
...
Рейтинг: 0 / 0
05.04.2020, 22:20
    #39944158
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
baracs
alexeyvg
Это вы в каком справочнике по T-SQL нашли?
Какой ещё ON DUPLICATE KEY?
Это в MySQL
Хм, в заголовке вопроса MS SQL, в тексте T-SQL, при чём тут MySQL?
Автор, может, думает, что синтаксис для всех СУБД одинаковый?
...
Рейтинг: 0 / 0
06.04.2020, 10:00
    #39944194
eliasum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
alexeyvg, нет нет, мне нужен именно T-SQL
...
Рейтинг: 0 / 0
06.04.2020, 10:07
    #39944197
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
eliasum
alexeyvg, нет нет, мне нужен именно T-SQL
Тогда читайте про синтаксис UPDATE в документации (ссылку я дал).

В вашем случае запрос будет примерно такой:
Код: sql
1.
2.
3.
4.
UPDATE m
SET Lat = t.Lat, Lng = t.Lng
from MyGMap as m
	join (VALUES (1,'1','2'), (2,'3','4')) as t(id, Lat, Lng) ON t.id = m.id
...
Рейтинг: 0 / 0
09.04.2020, 13:15
    #39945266
eliasum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
alexeyvg, спасибо!
...
Рейтинг: 0 / 0
09.04.2020, 14:02
    #39945304
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
Вангую, что ТСу надо либо вставить строки, либо, при наличии указанного id, обновить - т.е. ему нужен merge.
...
Рейтинг: 0 / 0
09.04.2020, 14:38
    #39945342
eliasum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновить несколько строк одним запросом MS SQL?
Решение такое:
Код: sql
1.
2.
3.
4.
UPDATE MyGMAP
SET Lat = CASE ID WHEN 1 THEN '1' WHEN 2 THEN '3' END,
    Lng = CASE ID WHEN 1 THEN '2' WHEN 2 THEN '4' END
WHERE ID IN (1, 2)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как обновить несколько строк одним запросом MS SQL? / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]