Обновить строку как копию строки в другой таблице без набора - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу синхронизировать несколько таблиц.Я хочу скопировать строку из одной таблицы и обновить ее для другой таблицы, но я не хочу указывать имена столбцов.Это потому, что я не хочу жестко программировать SQL-запрос для каждой таблицы отдельно.

Я пробовал несколько вариантов, он работал со вставкой, но я не могу найти решение для него с помощью Update

insert into t2 select * from t1 where sno=2;

В этом коде мне не нужно передавать имена столбцов в Insert, он автоматически знает список столбцов.Я хочу добиться того же с помощью обновления, где я не хочу передавать список столбцов внутри части SET.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Ну, если бы столбцы были одинаковыми, вы могли бы сделать:

delete from t2
    where exists (select 1 from t1 where t1.id = t2.id);

insert into t2
     select *
     from t1;

Я не понимаю, почему update будет использоваться для замены данных (хотя я все равно перечислю все столбцы).

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

0 голосов
/ 20 декабря 2018

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

update
  Table1 as T1
  inner join (
    select *
    from Table2 
    where ...
  ) as t2 on t1.Id = t2.Id
set T1.something = t2.something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...