求一SQL 语句 要求输出两个表中 某一字段不一样的数据

如表A 字段A1 里的数据为 1、2、3、4、5、6、7
表B 字段B1 里的数据为 2、4、5、8、9
怎样将B 表中的 8、9 这两条数据输出出来,
SQL 应该怎么写
select * from A" 结果集 为 rs
select * from B where B1='"&rs("A1")&"' 这样是能输出A1 和B1 字段 一样的数据
这样写SQL 能输出B1 和A1 不一样的数据

第1个回答  2010-08-29
not in 是一个不错的选择,可以实现集合的代数减法!

select * from B where B.B1 not in (select A.A1 from A)

而实现集合的交集时可以使用in,合集是Union等等,都可以实现的!

你写的那个语句虽能实现集合的交集,但由于要使用循环,效率极差,可以说绝对不是一个好主意的!

select * from B where B.B1 in(select A.A1 from A)
如果两表A1,B1同构的话,使用in也不是一个好主意的!

select B.* from B,A where A.A1 = B.B1

使用连接时速度较快,绝对是一个好主意,虽然我们不需要A表中的任何列值的!

多看一下谓词的使用,对你有好处.然后就是想,我如何将结果最快到取出来,别让SQL多那么多无谓的计算!考虑每种方法的优劣!
第2个回答  2010-08-30
查询B表不在A表中的数据
select * from b where b1 not in (select a1 from a)

查询B表,A表一样的数据
select A1 from A,B where A1 = B1本回答被提问者采纳
第3个回答  2010-08-29
select b1 from b minus
select a1 from a
相似回答