我的问题是,如果表中的值不存在于另一个表中,我如何更新表。我检查了INSERT ... ON DUPLICATE KEY UPDATE 但它描述了插入更新但不插入的内容。
我的情况就像,我有两张桌子说(t1,t2)。我想在t1中更新一个列,如果它在t2中不存在则更新。否则递增值并再次尝试更新。 所以我想要像
这样的东西update t1 set column = 'value' if it does not exists in t2
有人可以建议解决方案
答案 0 :(得分:0)
以下是使用JOIN进行此操作的方法。
create table tab1 (id int , val int);
insert into tab1 values (1,1),(2,3),(3,5);
create table tab2 (id int , val int);
insert into tab2 values (4,1),(2,3),(3,5);
在tab2中不可用的上述tab1(id = 1)中,使用以下命令我们可以更新这些值
update tab1 t1
left join tab2 t2 on t1.id = t2.id
set t1.val =
case
when t2.id IS NULL then 8
else t1.val
end
更新命令后的输出看起来像
mysql> select * from tab1 ;
+------+------+
| id | val |
+------+------+
| 1 | 8 |
| 2 | 3 |
| 3 | 5 |
+------+------+
你也可以使用EXIST,这也比做左连接
好update tab1 t1 set t1.val = 10
where NOT EXISTS
(
select 1
from tab2 where tab2.id = t1.id
)