Обновить несколько столбцов в SQL - PullRequest
145 голосов
/ 31 января 2012

Есть ли способ обновить несколько столбцов на сервере 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 столбцов.

Ответы [ 12 ]

184 голосов
/ 31 января 2012

Попробуйте это:

UPDATE table1 
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id

Это должно работать на большинстве диалектов SQL, за исключением Oracle.

И да - это много печатает - так SQL делает это.

76 голосов
/ 31 января 2012

«Утомительный путь» - это стандартный SQL и то, как это делают основные СУБД.

С более чем 100 столбцами у вас, скорее всего, есть проблемы с дизайном ... также, в клиентских инструментах есть методы смягчения (например, генерация операторов UPDATE) или с помощью ORM

20 голосов
/ 31 января 2012

Синтаксис Update table1 set (a,b,c) = (select x,y,x) является примером использования конструкторы значения строки, Oracle поддерживает это , MSSQL - нет. ( Элемент подключения )

16 голосов
/ 31 января 2012

Ваш запрос почти правильный.T-SQL для этого:

UPDATE  Table1
SET     Field1 = Table2.Field1,
        Field2 = Table2.Field2,
        other columns...
FROM    Table2
WHERE   Table1.ID = Table2.ID
12 голосов
/ 13 ноября 2016

Синтаксис

UPDATE table-name 
SET column-name = value, column-name = value, ...
WHERE condition

* Пример 1 011 *

UPDATE school
SET course = 'mysqli', teacher = 'Tanzania', student = 'you'
WHERE id = 6
8 голосов
/ 28 июня 2013
   UPDATE t1 
    SET 
    t1.a = t2.a,
    t1.b = t2.b,
    .
    .
    .


    FROM 
    table1 t1 
    INNER JOIN table2 t2 ON  t1.id=t2.id

Вы можете попробовать это

2 голосов
/ 17 ноября 2015

Я пробовал таким способом, и он работает нормально:

UPDATE 
  Emp
SET 
  ID = 123, 
  Name = 'Peter' 
FROM 
  Table_Name
1 голос
/ 18 февраля 2013

вот тот, который работает:

UPDATE  `table_1`
INNER JOIN 
 `table_2` SET  col1= value, col2= val,col3= val,col4= val;

значение - столбец из table_2

0 голосов
/ 25 июля 2017

Я сделал это в MySql, и он обновил несколько столбцов в одной записи, поэтому попробуйте это, если вы используете MySql в качестве сервера:

"UPDATE creditor_tb SET credit_amount='" & CDbl(cur_amount) & "'
                   , totalamount_to_pay='" & current_total & "',   
        WHERE credit_id='" & lbcreditId.Text & "'". 

Однако я кодировал на vb.net, используя сервер MySql, но вы можете перенести его на свой любимый язык программирования, если вы используете MySql в качестве сервера.

0 голосов
/ 13 января 2017
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

http://www.w3schools.com/sql/sql_update.asp

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