查看: 5923|回复: 18

[SQL] 【大话IT】求助,select的in的用法

[复制链接]
求职 : 数据库开发
招聘 : 数据分析/ETL
论坛徽章:
1
优秀写手
日期:2015-03-06 06:00:14
发表于 2015-3-3 15:52 来自手机 | 显示全部楼层 |阅读模式
各位大神好!我前几天写了一个sql,结果测试的人说有问题,in的用法好像不对。sql比较复杂,而且外包公司挫的不能上外网,手机码字中,简化如下:
假设A(a0,a1),B(b0,b1,b2,b3)两个表,链接条件是a0=b0,需要查询出a1不在b1,b2,b3的值。
select * from A where not exists(select 1 from B where a0=b0 and a1 not in(b1,b2,b3);
实际上B表有20多个字段在括号里,条件也比这个多,大概的结构就是这样。
假设A表有七笔数据,a0都是 J,一笔a1是0,六笔a1是1,B表只有一笔b0是J,b1是1,别的为空。两表a0,b0都是相同的J,那么查询没有结果出现,理论上应该有a1=0的那笔被查询出来。这个是为什么查不到呢?请大神能不吝赐教,感激!
求职 : 数据库开发
招聘 : 数据分析/ETL
论坛徽章:
1
优秀写手
日期:2015-03-06 06:00:14
 楼主| 发表于 2015-3-3 15:55 来自手机 | 显示全部楼层
说的比较乱,等下上图,抱歉!

使用道具 举报

回复
求职 : 数据库开发
招聘 : 数据分析/ETL
论坛徽章:
1
优秀写手
日期:2015-03-06 06:00:14
 楼主| 发表于 2015-3-3 15:57 来自手机 | 显示全部楼层
所有测试sql如图
image.jpg

使用道具 举报

回复
认证徽章
论坛徽章:
32
懒羊羊
日期:2015-03-25 16:16:10ITPUB14周年纪念章
日期:2015-10-26 17:24:11射手座
日期:2015-09-23 08:53:55喜羊羊
日期:2015-06-15 13:04:17暖羊羊
日期:2015-05-21 16:12:35沸羊羊
日期:2015-05-07 17:25:26暖羊羊
日期:2015-05-21 16:12:35暖羊羊
日期:2015-05-21 16:12:35慢羊羊
日期:2015-04-21 17:07:36慢羊羊
日期:2015-03-25 09:38:59
发表于 2015-3-3 16:00 | 显示全部楼层
a1 !=b1 and a1!=b2 and a1!=b3

使用道具 举报

回复
求职 : 数据库开发
招聘 : 数据分析/ETL
论坛徽章:
1
优秀写手
日期:2015-03-06 06:00:14
 楼主| 发表于 2015-3-3 16:00 来自手机 | 显示全部楼层
图也不够清晰…如果有不清楚的麻烦指出来,我再详细讲一下(☆_☆)

使用道具 举报

回复
认证徽章
论坛徽章:
32
懒羊羊
日期:2015-03-25 16:16:10ITPUB14周年纪念章
日期:2015-10-26 17:24:11射手座
日期:2015-09-23 08:53:55喜羊羊
日期:2015-06-15 13:04:17暖羊羊
日期:2015-05-21 16:12:35沸羊羊
日期:2015-05-07 17:25:26暖羊羊
日期:2015-05-21 16:12:35暖羊羊
日期:2015-05-21 16:12:35慢羊羊
日期:2015-04-21 17:07:36慢羊羊
日期:2015-03-25 09:38:59
发表于 2015-3-3 16:01 | 显示全部楼层
a1 not in(b1,b2,b3) 你这样是 or 关系

使用道具 举报

回复
求职 : 数据库开发
招聘 : 数据分析/ETL
论坛徽章:
1
优秀写手
日期:2015-03-06 06:00:14
 楼主| 发表于 2015-3-3 16:01 来自手机 | 显示全部楼层
iyee_tu 发表于 2015-3-3 16:00:19
a1 !=b1 and a1!=b2 and a1!=b3...

是个好方法!我还准备串联起来用like%a1%呢,感谢

使用道具 举报

回复
求职 : 数据库开发
招聘 : 数据分析/ETL
论坛徽章:
1
优秀写手
日期:2015-03-06 06:00:14
 楼主| 发表于 2015-3-3 16:04 来自手机 | 显示全部楼层
iyee_tu 发表于 2015-3-3 16:01:27
a1 not in(b1,b2,b3) 你这样是 or 关系...

哦,就是 a1 !=b1 or a1!=b2 or a1!=b3嘛,not in 不是应该全都不在里面的意思吗,我就是想了解这个的…,

使用道具 举报

回复
论坛徽章:
17
蛋疼蛋
日期:2012-04-27 23:09:45罗罗诺亚·索隆
日期:2016-11-04 21:04:09懒羊羊
日期:2015-06-23 09:05:532015年新春福章
日期:2015-04-01 14:21:232015年新春福章
日期:2015-03-06 11:58:39慢羊羊
日期:2015-03-04 14:53:33青年奥林匹克运动会-击剑
日期:2014-08-29 15:44:44马上加薪
日期:2014-02-18 16:48:492014年新春福章
日期:2014-02-18 16:48:49一汽
日期:2013-12-24 18:12:09
发表于 2015-3-3 16:07 | 显示全部楼层
直接not in b1不就行了

使用道具 举报

回复
求职 : 数据库开发
招聘 : 数据分析/ETL
论坛徽章:
1
优秀写手
日期:2015-03-06 06:00:14
 楼主| 发表于 2015-3-3 16:10 来自手机 | 显示全部楼层
zxy877298415 发表于 2015-3-3 16:07:11
直接not in b1不就行了...

大神,不行啊,b1,b2,b3都有可能存在,我是新手

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表