对比两个表,根据对比结果给其中一个表中的一个字段赋值

如果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代码就更好了
就是对比两个表,根据对比结果给其中一个表中的一个字段赋值
展开
 我来答
micro0369
2012-09-11 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3948万
展开全部
分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 = 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列 满足的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
工程师首岳
2012-09-11 · TA获得超过278个赞
知道小有建树答主
回答量:162
采纳率:100%
帮助的人:102万
展开全部
问题描述不清楚
如果A中的字段a,b,c的值和B中的有相同的,则A表d的值设为1
问:1.A中字段abc的值和B中abc的有相同的(字段对应);
2.A中字段abc中,随便哪一个字段的值和B中随便哪一个字段的值相同

其他问题类似,希望可以描述清楚一点..
追问
明显是相同字段的值对比好么,纠结着这个字眼
什么时候见过不同字段值乱对比的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式