mysql exists与not exists实例详解
mysql exists与not exists实例详解
tableA
|column1 | column1 |column3 |
tableb
|column1 | column1 |column3 |
要查询 tableA 的数据,条件是是 tableA.column1 不在 tableB 的 tableB.column2 中
也就是要得到类似以下语句的效果(not in 效果不完全等同于 not exists , 如果子查询中出现空记录, 则整个查询语句不会返回数据)
SELECT a.* FROM tableA a WHERE a.column1 not in ( SELECT column2 FROM tableB )
可以使用如下语句来实现
SELECT a.* FROM tableA a WHERE NOT EXISTS( SELECT b.column2 FROM tableB b WHERE a.colunm1=b.column2 )
以上只是两张表的情况, 其实在多张表的连接查询中也是比较好用的. 以上写法同样适用于exists
以上就是mysql exists与not exists的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
mysql insert if not exists防止插入重复记录的方法
MySQL 当记录不存在时插入(insert if not exists) 在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案. 在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案. 问题:我创建了一个表来存放客户信息,我知道可以用
-
安装mysql出错”A Windows service with the name MySQL already exists.“如何解决
如果以前安装过mysql,卸载重装,很可能会碰到"A Windows service with the name MySQL already exists."这样的提示.即服务已经存在. 我们可以在window任务管理器----服务中查看,发现确实存在,没有卸载干净. 解决这个问题,可以在dos窗口,使用如下命令: 复制代码 代码如下: sc delete mysql 如果成功,出现如下结果: [SC] DeleteService SUCCESS 之后,重启电脑.如果再在任务管理器--
-
MySQL关于exists的一个bug
今天碰到一个关于exists很奇怪的问题 第一个语句如下: SELECT count(1) FROM APPLY t WHERE EXISTS ( SELECT r.APPLY_ID FROM RECORD r WHERE t.APPLY_ID = r.APPLY_ID ); 产生的结果是:89584 第二个语句如下: SELECT count(1) FROM APPLY t WHERE EXISTS ( SELECT max(r.FINISH_TIME) FROM RECORD r WHERE
-
UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars WHERE noteexists
大家先看下数据库权限问题,然后再进行如下操作. SQL:SELECT value FROM [Table]vars WHERE name='noteexists2′ UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars WHERE name='noteexists2′ Error:SELECT command denied to user '数据库'@'IP地址' for table 'pre_ucenter_vars
-
mySQL中in查询与exists查询的区别小结
一.关于exists查询 explain select * from vendor where EXISTS(select * from area where area_code = vendor_prov_code ) limit 10 以上是一个典型的exists查询的sql语句. 它的作用方式是这样的:每次从vendor表中查询出一条数据,然后将这条数据中的vendor_prov_code值传递到exists查询中进行执行,也就是进行子查询的执行. 如果子查询查到的数据就返回布尔值true
-
MySQL的子查询中FROM和EXISTS子句的使用教程
FROM 子查询 FROM 子句中的子查询 MySQL FROM 子查询是指 FROM 的子句作为子查询语句,主查询再到子查询结果中获取需要的数据.FROM 子查询语法如下: SELECT ... FROM (subquery) AS name ... 子查询会生成一个临时表,由于 FROM 子句中的每个表必须有一个名称,因此 AS name 是必须的.FROM 子查询也称为衍生数据表子查询. FROM 子查询实例 table1: s1 s2 1 5 2 12 3 20 FROM 子查询 SQL
-
MySQL exists 和in 详解及区别
MySQL exists 和in 详解及区别 有一个查询如下: SELECT c.CustomerId, CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID = cu.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊
-
mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录
NOT IN.JOIN.IS NULL.NOT EXISTS效率对比 语句一:select count(*) from A where A.a not in (select a from B) 语句二:select count(*) from A left join B on A.a = B.a where B.a is null 语句三:select count(*) from A where not exists (select a from B where A.a = B.a) 知道以上三
-
MYSQL IN 与 EXISTS 的优化示例介绍
优化原则:小表驱动大表,即小的数据集驱动大的数据集. ############# 原理 (RBO) ##################### select * from A where id in (select id from B) 等价于: for select id from B for select * from A where A.id = B.id 当B表的数据集必须小于A表的数据集时,用in优于exists. select * from A where exists (selec
-
MySQL: mysql is not running but lock exists 的解决方法
启动MySQL出错,查看了下状态,发现提示MySQL is not running,but lock exists: 一个网友说可能和log文件有关,于是将log文件给移除了,再重启MySQL终于OK了找了下资料,基本上都是说: 复制代码 代码如下: # chown -R mysql:mysql /var/lib/mysql # rm /var/lock/subsys/mysql # service mysql restart 执行完发现还是这个提示. 因为是在cPanel服务器上,所以又通过命
随机推荐
- 详解如何使用webpack+es6开发angular1.x
- 关于动网的cookie泻露站点绝路径的问题
- Powershell实现编写和运行脚本
- 教你如何打造黑客也读不懂的安全密码
- 正则用(?>…)实现固化分组提高效率
- 一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载
- js判断屏幕分辨率的代码
- Android中XML的基本操作(增、删、改、查)
- Javascript基础教程之while语句
- 重置MySQL数据库root密码(linux/windows)
- php防止伪造数据从地址栏URL提交的方法
- BootStrap的两种模态框方式
- jquery动态添加option示例
- python实现多线程暴力破解登陆路由器功能代码分享
- MySQL中触发器入门简单实例与介绍
- JS实现的仿QQ空间图片弹出效果代码
- jQuery基于ajax方式实现用户名存在性检查功能示例
- js动态设置div的值下例子
- 修改注册表权限加强对木马、病毒的防范
- Java OCR tesseract 图像智能文字字符识别技术实例代码