以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] sql语名查询救助  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=114281)

--  作者:lmlptj
--  发布时间:2018/2/2 11:43:00
--  [求助] sql语名查询救助
有两个表:表A,字典表。两表中同有一个“机构编号”字段,字典表中有万个不同的机构编号(不重复值),而且是确定的。表A为人员库,也有机构编号,可重复,近万条数据。想用sqL语名查询表A中的人员有哪些”机构编号“是错误的,即不在 字典表 中机构编号的范围:以下sql语句生成的查询表查找不出来!请老师指点:

Sel ect  姓名,身份证号,机构编号 From {表A} Where 机构编号 not in (sel ect 机构编号 from{字典表})


将上述语句的”not" 去除后可查询结果出来,而且我将表A中的人员表故意放了几个不在字典表范围内的机构编号,但就是查不出来。

--  作者:有点甜
--  发布时间:2018/2/2 11:53:00
--  

试试这样

 

Select * From {表A} a left join {字典表} b on a.机构编号=b.机构编号 where b.机构编号 is null

 

试试改成

 

Select  姓名,身份证号,机构编号 From {表A} Where 机构编号 not in (select 机构编号 from{字典表} where 机构编号 is not null)


--  作者:有点甜
--  发布时间:2018/2/2 11:54:00
--  

或者

 

Select  姓名,身份证号,机构编号 From {表A} Where 机构编号 not Exists (select 机构编号 from{字典表})


--  作者:lmlptj
--  发布时间:2018/2/2 11:57:00
--  
真的可以了呀!谢谢!为嘛要加个非空的过滤条件呢?谢谢!
--  作者:有点甜
--  发布时间:2018/2/2 12:05:00
--  
以下是引用lmlptj在2018/2/2 11:57:00的发言:
真的可以了呀!谢谢!为嘛要加个非空的过滤条件呢?谢谢!

 

not in 改成 not Exists 就不需要加条件。

 

原因参考 https://www.cnblogs.com/snn0605/p/5901634.html