表A数据
(1,'A','张三','add')
(1,'B','张三','del')
(2,'A','李四','add')
(3,'B','王五','update')
表C数据
(A)
(B)
(C)
怎么判断每个人缺少的no并且把缺少的新增进表A ???
如张三缺少C,则新增(1,'B','张三','add')、(1,'C','张三','add');
李四缺少B、C,则新增(2,'B','李四','add')(2,'C','李四','add');
王五缺少A、C,则新增(3,'A','王五','add')(3,'C','王五','add');
以此类推、、、
以前发你的SQL,把中文的替换成你的字段,关键是 not in的时候加一个where就行。del的记录就当没有就行了。
insert into ma(id,fe,vname,状态字段) values(
SELECT id,vname,fe,'add' FROM (
select c.*,c.vname + ','+c.fe as kid from (
select * from
(
select distinct id,vname from ma
) a,
(select fe from mb)
b
) c
) D
where kid not in(SELECT VNAME+','+FE FROM ma where 状态字段<>'del')
)
记得以前写过吧,多了一个add,del,update。上面举例不清,没有说明白add,del,update和缺数是什么关系
提供一个思路给你,先按照名字对A表的数据进行分组,再对分组的数据取出no和c表取交集,得出不在c表的no,最后插入该no对应的数据到a表。