以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教:两张表按指定字段比较并返回未匹配的记录 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77188) |
-- 作者:bahamute -- 发布时间:2015/11/12 15:28:00 -- 请教:两张表按指定字段比较并返回未匹配的记录 表A有4000多条记录,表B有2700多条记录, 都有编号列(编号唯一),如何对编号做比较,并返回所有编号不匹配的所有记录? sql语句该如何下手? |
-- 作者:大红袍 -- 发布时间:2015/11/12 15:30:00 -- select * f rom {表A} Where 编号 not in (select 编号 f rom {表B}) |
-- 作者:大红袍 -- 发布时间: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 -- 发布时间:2015/11/12 15:33:00 -- 两种语句都可以吧 |
-- 作者:bahamute -- 发布时间:2015/11/12 16:28:00 -- 用3楼语法从SQL命令窗口测试出错: Select 表a.*, 表b.工号 As b工号 fr om 表a left join 表b on 表a.工号=表b.工号 where b工号 Is null
|
-- 作者:大红袍 -- 发布时间:2015/11/12 17:01:00 -- 哦,写错了
Select 表a.* fr om 表a left join 表b on 表a.工号=表b.工号 where 表b.工号 Is null
|
-- 作者:bahamute -- 发布时间: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 |
-- 作者:大红袍 -- 发布时间: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\'
|