比较A表和B表的数据 A表的数据 如果在B表中不存在 则删除 A表中的数据 判断 a表中的 a1字段 为0时候 把此条记录 insert到 B表中 为1时候 不变a表和b表比较 查出不一致的数据 然后修改 a表不一样的数据 以B表数据为准
一共3个 第一个解决啦 麻烦第一个语句也写出来 下地参考下
其他的有点迷糊 入门小弟求大神SQL增删改查A表和B表
一共3个 第一个解决啦 麻烦第一个语句也写出来 下地参考下
其他的有点迷糊 入门小弟求大神SQL增删改查A表和B表
1.DELETE FROM A WHERE NOT EXISTS (SELECT 1 FROM B WHERE A.XXX=B.XXX)2.INSERT INTO B SELECT * FROM A WHERE A1=03.比较两张表中各个字段不一致,还不如直接一次性更新a表的数据,将b表的数据更新的a表中
UPDATE A SET (X1,X2,X3.....) = (SELECT X1,X2,X3.....FROM B WHERE A.XXXX = B.XXXX)
主要做同步更新
把A表的取出来和B表的比较
以B表的数据为准
如果A表的多了 则删除
少了则添加
数据不一样啦则更改
然后A表中还会增加个字段根据这个字段 判断他是否将数据insert到C表中
create or replace procedure pro_test() as
flg1 int(1), dataid char(10);
-- 1:更新 2:删除 3:插入
Begin
Select case
when (select 1
from b
where b.b1 = a.a1
and a.a2 = b.b2) = 1 then
1
else
2
end,
a.a1
into flg1, dataid
from a ;
Select case
when not exists (select 1 from a where b.b1 = a.a1) then
3
end,
b.b1
into flg1, dataid
from b
if (flg1 = 1) then
delete from a where a.a1 = dataid;
insert into a select * from b where b.b1 = dataid;
elsif(flg1 = 2) then
delete from a where a.a1 = dataid;
elsif(flg1 = 3) then
insert into a select * from b where b.b1 = dataid;
end if;End;
你看看用存储过程吧,可能有点错误,你改改。
大体思路是这个样子的。
在正常的sql中实现
一个SQL不能写完的。如果你只是简单的以B表为基准更新A表的话 ,你可以直接把A表数据删掉重新从B表导入。