Sqlite

根據與另一個表中的列的匹配更新一個表中的列

  • June 14, 2019

我有 2 個表說table1包含 3 列col1col2並且其中包含col3和。我想設置= ‘some value’ where . 我發現不支持更新(我熟悉)。如何做到這一點?table2``col1``col2``col3``table1.col1 = table2.col1 and table1.col2 = table2.col2``SQLite3``join``postgresql

您可以嘗試這樣的事情,這是將 table1 的 col3 值設置為 table2 的 col3 值,它們在 col1 和 col2 上匹配。您可以將 col3 替換為您的“某個值”。

create table table1 (
col1 int,
col2 int,
col3 int
);

create table table2 (
col1 int,  
col2 int,
col3 int
);

insert into table1 values (1,2,3);
insert into table1 values (4,5,6);

insert into table2 values (1,2,10);
insert into table2 values (4,5,20);

select * from table1;

update table1
set col3 = (
select table2.col3
 from table2
where table1.col1 = table2.col1
  and table1.col2 = table2.col2
)
where exists (
select table2.col3
 from table2
where table1.col1 = table2.col1
  and table1.col2 = table2.col2
);

select * from table1;

DB小提琴

引用自:https://dba.stackexchange.com/questions/240602