Foxtable(狐表)用户栏目专家坐堂 → 请教:两张表按指定字段比较并返回未匹配的记录


  共有2825人关注过本帖树形打印复制链接

主题:请教:两张表按指定字段比较并返回未匹配的记录

帅哥哟,离线,有人找我吗?
bahamute
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
请教:两张表按指定字段比较并返回未匹配的记录  发帖心情 Post By:2015/11/12 15:28:00 [只看该作者]

表A有4000多条记录,表B有2700多条记录,
都有编号列(编号唯一),如何对编号做比较,并返回所有编号不匹配的所有记录?
sql语句该如何下手?


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/12 15:30:00 [只看该作者]

select * f rom {表A} Where 编号 not in (select 编号 f rom {表B})


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/12 15:32:00 [只看该作者]

select a.*, b.编号 as b编号 f rom {表A} a left join {表B} b on a.编号=b.编号 where b编号 is null


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/11/12 15:33:00 [只看该作者]

两种语句都可以吧

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/11/12 16:28:00 [只看该作者]

用3楼语法从SQL命令窗口测试出错:

列名 'b工号' 无效

Select 表a.*, 表b.工号 As b工号 fr om 表a left join 表b on 表a.工号=表b.工号 where b工号 Is null

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/12 17:01:00 [只看该作者]

哦,写错了

 

Select 表a.* fr om 表a left join 表b on 表a.工号=表b.工号 where 表b.工号 Is null

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/11/12 21:53:00 [只看该作者]

谢谢大红袍,这句代码起作用了,但我忽略了一点,
就是表b需要先筛选(比如:Select * fr om 表b where ny='201507'),然后再与表a匹配查询,那这个子查询语句该放到下面哪里?
Select 表a.* fr om 表a left join 表b on 表a.工号=表b.工号 where 表b.工号 Is null

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/12 22:16:00 [只看该作者]

Select 表a.* fr om 表a left join 表b on 表a.工号=表b.工号 where 表b.工号 Is null and 表b.ny = '201507'

 回到顶部