文档章节

一个有趣的sql查询问题

nanhai
 nanhai
发布于 2016/06/13 16:45
字数 346
阅读 4
收藏 0

事情的经过是这样的,某天项目经理让我导入一批记录到系统的user表里。当时,user表里有1900条记录,需要导入的数据有3306条。当然这批数据里也会存在已有的记录。所以需要将已存在的记录区分出来。我是这样写的sql:

select * from mydb.user
where username in (select username from mysystem.user);

ok,可以查询到1200多条重复的记录,那么只要这些记录不被推送进去就ok了。所以我将in改成了not in。

select * from mydb.user
where username not in (select username from mysystem.user);

按理来说,应该会有2000多条的记录才对。可是查询结果竟然记录数为0。无法理解,难道没有要导入的数据吗?通过手工查询,实际是有的。于是做了一个实验,将子查询的语句做些修正,加上查询条件

select * from mydb.user
where username not in (select username from mysystem.user where username='02159');

执行后返回的结果是正确的。百思不得其解,直到无意间发现mysystem.user表中存在username=null的记录后,我才明白过来。后面的就好解释了。

select * from mydb.user
where username not in (select username from mysystem.user where username is not null and username<>'');

全部ok

© 著作权归作者所有

共有 人打赏支持
nanhai
粉丝 4
博文 8
码字总数 2434
作品 0
苏州
后端工程师
一个20秒SQL慢查询优化的经历与处理方案

背景 前几天在项目上线过程中,发现有一个页面无法正确获取数据,经排查原来是接口调用超时,而最后发现是因为SQL查询长达到20多秒而导致了问题的发生。 这里,没有高深的理论或技术,只是备...

暗夜在火星
2015/04/11
0
46
Android 上的 SQL Lite 性能

也许有人还不知道,Android 是有一些内建的 类库支持 SQL Lite 数据库的操作。他提供了一个很好的方式在 Android 上组织少量的数据。不管怎样,在使用这些类库的时候有一些陷阱是需要注意的。...

虫虫
2012/04/08
5.8K
7
调查报告:现在的开发人员对数据库的使用方式

根据Evans数据公司提供的数据,全世界大约有1900万开发人员。而2015年StackOverflow开发者调查显示,36%的开发人员最近使用过SQL。也就是说,现如今大约有700万开发人员使用SQL。在过去四年里...

oschina
2016/01/01
3.2K
4
sql多表查询之一:Where 和 On的秘密

今天给大家转载一篇《sql多表查询之一:Where 和 On的秘密》,对于还在SQL初级阶段的朋友来说,sql多表查询问题是一个比较有趣也容易出错的技术。什么时候会用到sql多表查询呢?是在两张或两...

oecp
2011/07/27
0
1
为什么NoSQL应该被称作"使用另类存储模型的SQL"

你将会一次又一次的发现类似下面的博客文章,告诉你同样的关于SQL vs.NoSQL 的“真理”: http://onewebsql.com/blog/no-sql-do-i-really-need-it (OneWebSQL成了jOOQ的竞争对手, 查看先前一...

tsl0922
2012/07/29
2.1K
10

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
34分钟前
0
0
php require和include 相对路径一个有趣的坑

以前总是被教育,不要使用相对路径,这样性能比较差,但是相对路径的问题不仅仅是性能哦,看下面这里例子 这是项目结构 .├── main.php├── t│ ├── t1.php│ └── t2.php└─...

anoty
35分钟前
17
0
x64技术之SSDT_Hook

测试环境: 虚拟机: Windows 7 64bit 过PG工具 驱动加载工具 PCHunter64 系统自带的计算器和任务管理器等 实现思路: 实际思路与win32的思路一样.都是替换SSDT表里边的函数地址.不过微软被搞怕...

simpower
36分钟前
0
0
TreeMap源码分析,看了都说好

一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很...

Java小铺
46分钟前
0
0
协变、逆变

概念 假设 A、B表示类型 ≤ 表示继承关系 f<⋅>表示类型转换 若A ≤ B,则 A是B的子类,B是A的超类 协变、逆变 什么是型变?型变(type variance)允许对类型进行子类型转换。 为了下面讲解先...

obaniu
52分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部