not exists是sql中的一个语法,常用在子查询和主查询之间,用于条件判断,根据一个条件返回一个布尔值,从而来确定下一步操作如何进行,not exists也是exists或in的对立面。

not exists 是exists的对立面,所以要了解not exists的用法,我们首先了解下exists、in的区别和特点:

exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:select name from student where sex = 'm' and mark exists(select 1 from grade where ...)

只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。

而 exists 与 in 最大的区别在于 in引导的子句只能返回一个字段,比如:select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)

in子句返回了三个字段,这是不正确的,exists子句是允许的,但in只允许有一个字段返回,在1,2,3中随便去了两个字段即可。

而not exists 和not in 分别是exists 和 in 的 对立面。exists (sql 返回结果集,为真)

主要看exists括号中的sql语句结果是否有结果,有结果:才会继续执行where条件;没结果:视为where条件不成立。not exists (sql 不返回结果集,为真)

主要看not exists括号中的sql语句是否有结果,无结果:才会继续执行where条件;有结果:视为where条件不成立。

not exists:经过测试,当子查询和主查询有关联条件时,相当于从主查询中去掉子查询的数据。

例如:

test数据:id name

1 张三

2 李四select * from test c where not exists

(select 1 from test t where t.id= '1' )

--无结果select * from test c where not exists

(select 1 from test t where t.id= '1' and t.id = c.id)

--返回2 李四

mysql中not exists用法_not exists用法相关推荐

  1. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示.  比如 SELECT * FROM [user ...

  2. mysql 中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...

  3. mysql中模糊查询的四种用法

    转载自  https://www.cnblogs.com/songfayuan/articles/7290158.html 下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可 ...

  4. mysql中insert语句的五种用法

    文章目录 前言 一.values参数后单行插入 二.values参数后多行插入 三.搭配select插入数据 四.复制旧表的信息到新表 五.搭配set插入数据 总结 前言 insert语句是标准sql ...

  5. mysql中uuid的写法_MySQL IS_UUID()用法及代码示例

    MySQL中的此函数用于检查给定的通用唯一标识符(UUID)是否有效.如果参数是有效的string-format UUID,则返回1:如果参数不是有效的UUID,则返回0:如果参数为NULL,则返回N ...

  6. mysql timestamp add_「timestampdiff」MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 - seo实验室...

    timestampdiff 语法: TIMESTAMPDIFF(Interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_exp ...

  7. MySQL中for update的作用和用法

    一.for update定义 for update是一种行级锁,又叫排它锁. 一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行. 如果 ...

  8. mysql中函数mid_MySQL MID()函数的用法详解(代码示例)

    在MySQL中,MID()函数返回从指定位置开始的子字符串. MID()和SUBSTR()都是SUBSTRING()的同义词. 基本语法是这样的:MID(str,pos,len) 这里,str是字符串 ...

  9. MySQL中函数field()的用法

    MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序. 函数使用格式如下: order by (str,str1,str2,str3,str4--),str与str1,str ...

最新文章

  1. Java网络编程之IP地址和InetAddress类
  2. 华为首款鸿蒙设备正式入网,华为首款鸿蒙设备正式入网:麒麟9000+挖孔全面屏,价格感人!...
  3. The Event System
  4. 2019年技术盘点云数据库篇(二):阿里云携手MongoDB率先上线4.2数据库 云上数据库已是大势所趋...
  5. 宁德时代考虑50亿美元在北美建厂 目标年产能最高80 GWh
  6. Python进阶三部曲网络编程
  7. 01.赋值运算符函数(C++实现)
  8. No package ‘libpeas-1.0‘ found/No package ‘libpeas-gtk-1.0‘
  9. 兼容sdk7iOS7的issue解决小片段总结
  10. axure插件安装360浏览器
  11. 如何更新TeamViewer电脑客户端?
  12. c语言找adc最小值,STC12C5A60S2 AD转换C语言示例程序(ADC查询方式)
  13. 过麦--回忆里面的山东
  14. tga格式转化为jpg格式
  15. matlab标题斜体_matlab 斜体 正体
  16. 读取文件云服务器bcc,云服务器bcc 使用
  17. 那么telnet到底是一个协议还是一个软件呢?
  18. imple-unpack---攻防世界
  19. 51单片机自学--交通红绿灯模拟
  20. 01、java02-运算符 流程控制 方法

热门文章

  1. JVM中的STW(Stop The World)
  2. PP代码生成器(二) 解决方案, 生成任务, 辅助设计面板
  3. 易语言画板加载html页面,易语言画板打印源码可以直接打印画板
  4. 领域驱动设计架构概述与设计原则
  5. 币储交易所BTCSP系统研发侧重信用机制技术提升
  6. 按键精灵执行sql语句,获取返回值
  7. 游戏延迟测试软件,官方发布游戏延迟测试工具将优化网络
  8. [oeasy]python0019_ 打包和解包_struct_pack_unpack
  9. Maven是什么,以及为什么要使用Maven
  10. WebsitePanel(wsp)配置详解(安装指南)