对比两个表,根据对比结果给其中一个表中的一个字段赋值
如果A中的字段a,b,c的值和B中的有相同的,则A表d的值设为1如果A中的字段a,b的值和B中相同,c不同,则d值为2,如果A中的字段a,b的数据在B中找不到相同的,则A...
如果A中的字段a,b,c的值和B中的有相同的,则A表d的值设为1
如果A中的字段a,b的值和B中相同,c不同,则d值为2,
如果A中的字段a,b的数据在B中找不到相同的,则A中的d值为3
SQL语句怎么写,如果能集合有java代码就更好了
就是对比两个表,根据对比结果给其中一个表中的一个字段赋值 展开
如果A中的字段a,b的值和B中相同,c不同,则d值为2,
如果A中的字段a,b的数据在B中找不到相同的,则A中的d值为3
SQL语句怎么写,如果能集合有java代码就更好了
就是对比两个表,根据对比结果给其中一个表中的一个字段赋值 展开
展开全部
分3个sql写:
update a set a.d = 1 where exists (select 1 from b where a.a = b.a and a.b=b.b and a.c=b.c);
update a set a.d = 2 where exists (select 1 from b where a.a = b.a and a.b=b.b and a.c<>b.c);
update a set a.d = 3 where not exists (select 1 from b where a.a = b.a and a.b=b.b);
update a set a.d = 1 where exists (select 1 from b where a.a = b.a and a.b=b.b and a.c=b.c);
update a set a.d = 2 where exists (select 1 from b where a.a = b.a and a.b=b.b and a.c<>b.c);
update a set a.d = 3 where not exists (select 1 from b where a.a = b.a and a.b=b.b);
追问
update a set a.d = 3 where not exists (select 1 from b where a.ab.a and a.bb.b);是不一样才为3
应该这么写吧
然后 select 1 from b 什么意思,1是什么?
追答
select 1 from tab where ... 这就是取一个常量列,主要是为了判断是否有行,写select b.* 也可以。
注意我用的是 not exists:
update a set a.d = 3 where not exists (select 1 from b where a.a = b.a and a.b=b.b); -- A表的 a,b 在B表中 找不到同时 a列和b列 满足的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询