简介

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。

EXISTS 指定一个子查询,检测行的存在。语法:EXISTS subquery。参数 subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。结果类型为 Boolean,如果子查询包含行,则返回 TRUE。

示例

一张活动配置主表activity_main,通过act_code来唯一标明一场活动,活动举办地点适配表activity_area,通过act_code与主表进行关联,活动奖品表activity_sku,通过act_code与主表进行关联。

活动主表

CREATE TABLE `activity_main` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`act_code` varchar(255) NOT NULL COMMENT "活动代码",

`act_name` varchar(255) NOT NULL COMMENT "活动名称",

PRIMARY KEY (`id`),

UNIQUE KEY `uniq_code` (`act_code`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT="活动主表"

活动在哪些网站举办的适配表

CREATE TABLE `activity_area` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`act_code` varchar(255) NOT NULL COMMENT "活动代码",

`area` varchar(255) NOT NULL COMMENT "参与此活动的网站",

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT="活动适配的网站列表"

活动奖品表

CREATE TABLE `activity_sku` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`act_code` varchar(255) NOT NULL COMMENT "活动代码",

`sku` varchar(255) NOT NULL COMMENT "活动赠送的商品",

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT="活动赠品表"

比较使用 EXISTS 和 IN 的查询

这个例子比较了两个语义类似的查询。第一个查询使用 IN 而第二个查询使用 EXISTS。注意两个查询返回相同的信息。

# 查询体重秤

select * from activity_main where act_code in (

select act_code from activity_sku where sku = "翎野君的体脂称"

)

# 查询体重秤

select * from activity_main a where exists (

select 1 from activity_sku b where a.act_code = b.act_code and b.sku = "翎野君的体脂称"

)

# 模糊查询B-BEKO英国婴儿推车

select * from activity_main where act_code in (

select act_code from activity_sku where sku like "%B-BEKO%"

)

# 模糊查询B-BEKO英国婴儿推车

select * from activity_main a where exists (

select 1 from activity_sku b where a.act_code = b.act_code and b.sku like "%B-BEKO%"

)

# 查询在博客园举办的活动

select * from activity_main where act_code in (

select act_code from activity_area where area = "博客园"

)

# 查询在博客园举办的活动

select * from activity_main a where exists (

select 1 from activity_area b where a.act_code = b.act_code and b.area = "博客园"

)

# 在博客园举办活动且活动奖品为华为手机的活动信息

select * from activity_main where act_code in (

select act_code from activity_area where area = "博客园" and act_code in (

select act_code from activity_sku where sku = "华为P30Pro"

))

# 内层的exists语句只在当前where语句中生效,最终是否返回,要根据最外层的exists判断,如果是 true(真)就返回到结果集,为 false(假)丢弃。

select * from activity_main a where exists (

select 1 from activity_area b where a.act_code = b.act_code and b.area = "博客园" and exists

(select 1 from activity_sku c where a.act_code = c.act_code and c.sku = "华为P30Pro")

)

以上就是Mysql exists用法小结的详细内容,更多关于Mysql exists用法的资料请关注云海天教程其它相关文章!

原文链接:https://segmentfault.com/a/1190000038464558

mysql exists怎么用_Mysql exists用法小结相关推荐

  1. mysql exists依赖查询_MySQL EXISTS 和 NOT EXISTS 子查询

    MySQL EXISTS 和 NOT EXISTS 子查询语法如下: 1 SELECT ... FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据, ...

  2. mysql 常用的数据源_MySQL常用数据库小结

    SQL分类:DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL-数据控制语言(GRANT ...

  3. mysql的exp平方_MySQL EXP()用法及代码示例

    MySQL中的EXP()函数用于将E提升为指定数字的幂.这里E(2.718281 ...)是自然对数的底数. 用法: EXP(X) 参数:此方法接受语法中上面提到并在下面描述的一个参数: X-一个指定 ...

  4. MySQL inet aton函数_MySQL INET_ATON()用法及代码示例

    INET_ATON(): MySQL中的此函数将IPv4地址的dotted-quad表示形式作为字符串,并以整数形式返回给定IP地址的数值.如果输入地址不是有效的IPv4地址,则此函数返回NULL.返 ...

  5. mysql的weekday函数_MySQL WEEKDAY()用法及代码示例

    MySQL中的WEEKDAY()函数用于查找给定日期的工作日值.如果日期为NULL,则WEEKDAY()函数将返回NULL.否则,它将返回日期的索引,即星期一为0,星期二为1,星期日为6. 用法: W ...

  6. mysql aes源码_MySQL AES_DECRYPT()用法及代码示例

    MySQL AES_DECRYPT函数在解密加密的字符串后返回原始字符串.它使用AES(高级加密标准)算法执行解密. AES_DECRYPT函数返回解密的字符串,如果检测到无效数据,则返回NULL. ...

  7. mysql distinct效率优化_mysql distinct 用法详解及优化

    本事例实验用表task,结构如下 MySQL> desc task; +-------------+------------+------+-----+-------------------+- ...

  8. mysql 的或表达式_MySQL表达式学习小结

    在mysql数据库中,一个表达式是直接量.列名.运算符和函数的组合,然后得到一个值. 例如: 5-2 这是一个表达式: LEFT('this',2)    也是一个表达式. 1,表达式别名 对于SEL ...

  9. mysql 结束符报错_Mysql手工注入小结

    前言 实习电话面的时候,问到了sql注入的利用,我扒拉扒拉一大堆,结果脑子一抽,说Mysql注入不支持堆叠注入 我学安全目前最后悔的事情就是,最开始入门的时候,连数据库这门课都没开始学,当时连最基本的 ...

最新文章

  1. Cisco交换机解决网络蠕虫病毒***问题
  2. LeetCode-Sort List 链表排序
  3. SDL及扩展库在ARM-Linux 完整移植
  4. seo vue 动态路由_VUE项目SEO问题的解决
  5. docker file 示例
  6. 爬虫2 urllib用法
  7. 无需第三方recovery安装xposed,亲测有效
  8. w ndows模拟器,iPad 模拟器 模拟器(windows - iPadian)
  9. VS2013导出模板与删除导出模板
  10. spring手动控制事务开启_手动控制spring事务
  11. Android开发 SpannableString开发详解
  12. 使用python解决图像识别中常见的问题
  13. image could not be accessed on a registry to record its digest
  14. MATLAB长除法求z变换逆变换
  15. PHP开发阿里云短信服务接口
  16. 汉化+破解Substance Painter 2019 macv2019.1.0图文展示
  17. java-easyExcel导出-合并单元格
  18. php计算两个坐标(经度,纬度)之间的方位角
  19. win10xp化折腾指南
  20. 081200计算机科学与技术专业,研究生计算机科学与技术专业排名

热门文章

  1. 二维码(带Logo)加密解密-ZXing方式
  2. vs2019 安装完成没有反应_vs2019安装失败解决方法
  3. dreamwrear cc 汉化
  4. 外网访问内网SpringBoot【免费内网穿透】
  5. 点击confirm的取消如何隐藏提示框
  6. 为什么华为手机用的是鸿蒙系统,鸿蒙系统已经发布,为何华为手机还在用安卓?余承东给出了答案...
  7. 关于大模型实践的一些总结
  8. 图灵指数——学术大数据下的跨领域跨年代学者影响力评估
  9. 运动会计算机学院的方队,急求计算机学院运动会方队口号
  10. P2128 赤壁之战 AC于2018.11.6