如果有两张表,第一张表的数据是全部的数据,第二张表的数据在第一张表中肯定有的。
结果是:从第一张表中筛选出除去第二张表中有的数据。
比如:
第一张表A
id name subject score
1 张三 语文 90
2 张三 数学 80
3 张三 英语 70
4 李四 语文 95
5 李四 数学 85
6 李四 英语 75
7 王五 语文 67
8 王五 英语 70
第二表B:
id name subject score
1 张三 语文 90
2 张三 数学 80
3 张三 英语 70
4 李四 英语 75
我通过SQL语句想得到的结果是:
id name subject score
1 李四 语文 95
2 李四 数学 85
3 王五 语文 67
4 王五 英语 70
这样的SQL语句该如何查询?
7 个解决方案
#1
select *
from tbl_a left join tbl_b
on tbl_a.name=tbl_b.name
and tbl_a.subject=tbl_b.subject
and tbl_a.score=tbl_b.score
where tbl_b.name is null
and tbl_b.subject is null;
from tbl_a left join tbl_b
on tbl_a.name=tbl_b.name
and tbl_a.subject=tbl_b.subject
and tbl_a.score=tbl_b.score
where tbl_b.name is null
and tbl_b.subject is null;
#2
select * from A
minus
select * from B
minus
select * from B
#3
#4
select a.id,a.name,a.subject,a.score from A a
where a.name||a.subject not in (select b.name||b.subject from B b)
where a.name||a.subject not in (select b.name||b.subject from B b)
#5
楼上的方法 是查不出任何结果的
#6
我说的是2楼
#7
3楼 也不行
#1
select *
from tbl_a left join tbl_b
on tbl_a.name=tbl_b.name
and tbl_a.subject=tbl_b.subject
and tbl_a.score=tbl_b.score
where tbl_b.name is null
and tbl_b.subject is null;
from tbl_a left join tbl_b
on tbl_a.name=tbl_b.name
and tbl_a.subject=tbl_b.subject
and tbl_a.score=tbl_b.score
where tbl_b.name is null
and tbl_b.subject is null;
#2
select * from A
minus
select * from B
minus
select * from B
#3
#4
select a.id,a.name,a.subject,a.score from A a
where a.name||a.subject not in (select b.name||b.subject from B b)
where a.name||a.subject not in (select b.name||b.subject from B b)
#5
楼上的方法 是查不出任何结果的
#6
我说的是2楼
#7
3楼 也不行