作业帮 > 综合 > 作业

求SQL写法 两个表,暂且称为A,B,其中A表中有两列,a1,a2 B表中也两列b1,b2,a1列和b1列 的值是相同的

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/29 03:24:31
求SQL写法 两个表,暂且称为A,B,其中A表中有两列,a1,a2 B表中也两列b1,b2,a1列和b1列 的值是相同的
a2和b2列的值有相同的部分也有不同的部分,如以下
a1 a2
a 10
a 20
b 30
b 40
B 表中数据如下
b1 b2
a 10
a 20
a 30
b 50
求找出在a1=b1的时候,A B 两表中对应的a2和b2不同的值的sql写法,
select * from A where not exist (select * from B where A.a1=B.b1 and A.a2=B.b2)
union
select * from B where not exist (select * from A where B.b1=A.a1 and B.b2=A.a2)
再问: 其实我要的效果可以用这个SELECT * from A WHERE a1+a2 not in( select b1+b2 from B) 就是以A表的数据为准,查找出b1+b2 不存在于A表中a1+a2的明细,但not in 效率太低,还请赐教
再答: not in/in的效率肯定比exists低。看你的题目意思,是要找出AB两个表中不同的记录还是从表A中找出不存在于表B的记录?如果是从两个表中都找出来,那你只找了一半。AB两个表没有关联的字段,用你的写法也可以,但还是推荐用exists。上面的两个语句我把exists少写了一个s,呵呵。但不知道是否能实现你的要求,你可以试一下。
再问: 其实就是已A表的数据为准确数据,拿B表的数据跟A表作比较,两个表中不同的数据都要找出来的,我在测试你的语句,谢谢!