Обновление нескольких столбцов в SQL

Есть ли способ обновить несколько столбцов на сервере SQL так же, как используется оператор insert?

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

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 столбцов.

Ответ 1

"Утомленный путь" - это стандартный SQL и как это делают обычные РСУБД.

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

Ответ 2

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

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

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

И да - это много набрав - это так, как это делает SQL.

Ответ 4

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

UPDATE  Table1
SET     Field1 = Table2.Field1,
        Field2 = Table2.Field2,
        other columns...
FROM    Table2
WHERE   Table1.ID = Table2.ID

Ответ 5

Синтаксис

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

Пример

UPDATE school
SET course = 'mysqli', teacher = 'Tanzania', student = 'you'
WHERE id = 6

Ответ 6

   UPDATE t1 
    SET 
    t1.a = t2.a,
    t1.b = t2.b,
    .
    .
    .


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

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

Ответ 7

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

UPDATE 
  Emp
SET 
  ID = 123, 
  Name = 'Peter' 
FROM 
  Table_Name

Ответ 8

вот что работает:

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

Значение - столбец из таблицы_2

Ответ 9

Если вам нужно повторно ввести это несколько раз, вы можете сделать то, что я сделал один раз. Получите имена столбцов в строках в листе excel (запишите в конце каждого имени столбца (=), который легко в блокноте ++), с правой стороны сделайте столбец для копирования и вставки вашего значения, которое будет соответствовать новым записям в каждый колонка. Затем справа от них в независимой колонке помещаются запятые как созданные

Затем вам придется копировать ваши значения в средний столбец каждый раз, а затем просто вставлять и запускать

Я не знаю более простого решения

Ответ 10

Я сделал это в 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 в качестве своего сервера.

Ответ 12

update T1
set T1.COST2=T1.TOT_COST+2.000,
T1.COST3=T1.TOT_COST+2.000,
T1.COST4=T1.TOT_COST+2.000,
T1.COST5=T1.TOT_COST+2.000,
T1.COST6=T1.TOT_COST+2.000,
T1.COST7=T1.TOT_COST+2.000,
T1.COST8=T1.TOT_COST+2.000,
T1.COST9=T1.TOT_COST+2.000,
T1.COST10=T1.TOT_COST+2.000,
T1.COST11=T1.TOT_COST+2.000,
T1.COST12=T1.TOT_COST+2.000,
T1.COST13=T1.TOT_COST+2.000
from DBRMAST T1 
inner join DBRMAST t2 on t2.CODE=T1.CODE