从表A中查询表B中没有的记录,SQL语句如何写?

沉醉灬 2011-07-09 03:47:51
MSSQL中有两个表,结构一样,B中有的A中都有,A中有的B中不一定有。A、B表中部门、姓名都设为主键。
表A:
部门 姓名
物流 张三
物流 李四
财务 赵武
采购 刘三
采购 韩起
人事 王五

表B:
部门 姓名
物流 张三
采购 刘三
财务 赵武

现在要使用select * from A语句查询表A中存在但表B中没有的记录,如何写?
...全文
352 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljq0310 2011-08-18
  • 打赏
  • 举报
回复
用expert呗
AcHerat 元老 2011-07-09
  • 打赏
  • 举报
回复
小说看的太起劲了!话说是什么小说来着?
AcHerat 元老 2011-07-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cd731107 的回复:]

SQL code
select *
from a
where not exists (select 1 from b where b.部门 = a.部门 and b.姓名 = a.姓名)
union all
select *
from b
where not exists (select 1 from a where b.部门 = a.部门 and b.姓名 = a.姓名)
[/Quote]

B中有的A中都有,A中有的B中不一定有

豆子要看好,有点冗余哦!
cd731107 2011-07-09
  • 打赏
  • 举报
回复
--想多了,像小三这样就可以了
select *
from a
where not exists (select 1 from b where b.部门 = a.部门 and b.姓名 = a.姓名)
cd731107 2011-07-09
  • 打赏
  • 举报
回复
select *
from a
where not exists (select 1 from b where b.部门 = a.部门 and b.姓名 = a.姓名)
union all
select *
from b
where not exists (select 1 from a where b.部门 = a.部门 and b.姓名 = a.姓名)
AcHerat 元老 2011-07-09
  • 打赏
  • 举报
回复

--2000 or 2005

select a.*
from a join b on a.部门 = b.部门 and a.姓名 = b.姓名
where b.部门 is null
AcHerat 元老 2011-07-09
  • 打赏
  • 举报
回复

--SQL2000

select *
from A
where not exists (select 1 from b where 部门 = a.部门 and 姓名 = a.姓名)

--SQL2005

select * from a
except
select * from b

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧