快活林资源网 Design By www.csstdc.com
记一次有趣的发现:
有一个表,总记录数是1000条,现在有一条查询语句:
#查询语句1 #找出表中id中含有‘A'或‘B'或‘C'的字段 select * from table1 where id like '%A%' or id like '%B%' or id like '%C%' ; #成功查出300条
嗯查询正常,有300条记录呢。
然后我随便再敲一次查询语句…:
#查询语句2 #找出表中id中不含有‘A'且不含有‘B'且不含有‘C'的字段 select * from table1 where id not like '%A%' and id not like '%B%' and id not like '%C%' ; #成功查出400条
嗯查出了400条呢…什么?!只有400条??不是应该700条吗!!!
我如雷轰顶——哪里不对了??
按道理,“找出表中id中含有‘A'或‘B'或‘C'的字段” 应该等价于 “找出表中id中不含有‘A'且不含有‘B'且不含有‘C'的字段” 的啊!这是由集合运算决定的啊!
“找出表中id中含有‘A'或‘B'或‘C'的字段”看作 A∪B∪C
“找出表中id中不含有‘A'且不含有‘B'且不含有‘C'的字段”看作 "htmlcode">
#查询语句3 #找出表中id中不含有‘A'或‘B'或‘C'的字段 select * from table1 where id not in (select * from table1 where id like '%A%' or id like '%B%' or id like '%C%' ); #成功查出700条
咦??怎么这样查,才是查询语句1的互补集呢?
我将查询语句2和查询语句3得到的结果一比较,发现:原来缺少的300条记录,是id 为NULL的情况!
也就是说,not like ‘%A%' 是不能查出NULL的记录的!
经过了解,发现:
又发现了一个细节知识~
补充:注意mysql的not in查询值中存在null值时返回的查询结果会一直为空
现在有数据库表是
当我们使用这样的查询语句时:
select * from user where username not in ( select username from user where id != 2 )
这时子查询的结果包含了null值,所以结果会一直返回空查询,而不会返回预期的id为2这一行
我们可以稍微修改一下查询形式:
select * from user where username not in ( select username from user where id != 2 and username is not null )
这时排除了username为空的列,就可以得到预期的结果了
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
快活林资源网 Design By www.csstdc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
快活林资源网 Design By www.csstdc.com
暂无评论...
更新日志
2024年12月23日
2024年12月23日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]