Есть ли способ обновить несколько столбцов на сервере SQL так же, как используется оператор вставки?
Что-то вроде:
Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id
Или что-то в этом роде, а не так:
update table set a=t2.a,b=t2.b etc
что может быть довольно утомительно писать, если у вас более 100 столбцов.
Ответы:
«Утомительный путь» - это стандартный SQL и то, как это делают основные СУБД.
С более чем 100 столбцами, вы, скорее всего, столкнетесь с проблемой проектирования ... также существуют методы смягчения в клиентских инструментах (например, генерация операторов UPDATE) или использование ORM
источник
Попробуй это:
Это должно работать на большинстве диалектов SQL, за исключением Oracle.
И да - это много печатать - так SQL делает это.
источник
Update table1 set (a,b,c) = (select x,y,x)
Синтаксис является примером использования строк значений конструкторов, Oracle поддерживает это , MSSQL не делает. ( Подключить пункт )источник
Ваш запрос почти правильный. T-SQL для этого:
источник
Синтаксис
пример
источник
Вы можете попробовать это
источник
Я пробовал таким образом, и он работает нормально:
источник
вот тот, который работает:
значение столбца из таблицы_2
источник
Если вам нужно набрать это несколько раз, вы можете сделать то же, что и я. Получите имена ваших столбцов в строках на листе Excel (запишите в конце названия каждого столбца (=), что легко в notepad ++) справа, создайте столбец для копирования и вставьте свое значение, которое будет соответствовать новым записям в каждый столбец. Затем справа от них в независимом столбце поставьте запятые, как задумано
Затем вам придется каждый раз копировать ваши значения в средний столбец, затем просто вставлять и запускать
Я не знаю более простого решения
источник
Я хотел бы поделиться с вами, как я решаю этот вопрос. Мой случай немного отличается, так как результат table2 является динамическим, и номера столбцов могут быть меньше, чем в table1. Но концепция та же самая.
Сначала получите результат table2.
Далее открутите его.
Затем напишите запрос на обновление, используя динамический SQL. Пример кода написан для тестирования 2 простых таблиц - tblA и tblB
PRINT @TSQL
результат:источник
Я сделал это в MySql, и он обновил несколько столбцов в одной записи, поэтому попробуйте это, если вы используете MySql в качестве сервера:
Тем не менее, я программировал на vb.net, используя сервер MySql, но вы можете использовать его на своем любимом языке программирования, если вы используете MySql в качестве сервера.
источник
http://www.w3schools.com/sql/sql_update.asp
источник
источник