mysql exists的用法(Mysql exists用法小结)
类别:数据库 浏览量:101
时间:2022-03-31 00:24:16 mysql exists的用法
Mysql exists用法小结简介
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中mergeinto的用法(MySQL中exists、in及any的基本用法)
- docker怎么连接mysql(docker如何安装mysql)
- MySQL 8.0.19安装详细教程(windows 64位)(MySQL 8.0.19安装详细教程windows 64位)
- mysql主从复制延迟解决方案(关于mysql主备切换canal出现的问题解决)
- python怎么操作mysql(详解Python的数据库操作pymysql)
- mysql索引分几种(MySQL 覆盖索引的优点)
- mysql重复插入数据教程(Mysql避免重复插入数据的4种方式)
- oracle和mysql查询所有表(Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍)
- mysql8.0设置root密码(MySQL8.0.23版本的root密码重置最优解法)
- mysql创建表存在哪里(MySQL的表空间是什么)
- mysql8.0.23.0官方安装手册(MySQL8.0.23安装超详细教程)
- mysql 查询语句group by用法(MySQL group by和order by如何一起使用)
- 搭建php和mysql的运行环境(Windows环境开发PHP完整配置教程Apache+Mysql+PHP)
- iis6双php版本的设置(云主机IIS7.5支持PHP5.3以上版本和MYSQL)
- mysql字符串默认长度(MySQL 字符类型大小写敏感)
- centos7离线安装mysql5.7(CentOS7.5 安装MySql的教程)
- 法国面包(法国面包法棍)
- 微信(微信分身)
- 双十二(双十二和双十一哪个划算)
- 佛肚竹盆景的养护之道(佛肚竹盆景的养护之道)
- 包水饺(包水饺手法怎么包视频)
- 越南河粉(越南河粉来自哪里)
热门推荐
- iisweb服务器的启动与配置(win7 iis配置怎么配置 Win7配置IIS服务器图文教程)
- docker端口映射和暴露端口的区别(解决docker指定udp端口号的问题)
- 方法参数过多的解决方法
- python网页自动化selenium(python利用selenium进行浏览器爬虫)
- canvas进阶教程(原生canvas制作画图小工具的踩坑和爬坑)
- ASP.NET压缩图片
- idea配置mysql最大连接数(IDEA连接不上MySQL端口号占用的解决)
- sql server还原数据库时提示数据库正在使用
- mysql与oracle如何直接连接(Oracle更换为MySQL遇到的问题及解决)
- node.js缓存区(如何利用node实现静态文件缓存详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9