Mysql exists用法小结

Mysql exists用法小结

这篇文章主要介绍了关系型数据库存在用法的的相关资料,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下

简介

存在用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值真实的或错误。

存在指定一个子查询,检测行的存在。语法:存在子查询。参数子查询是一个受限的挑选语句(不允许有计算子句和到…里面关键字)。结果类型为布尔型,如果子查询包含行,则返回没错。

示例

一张活动配置主表活动_主要通过行为代码来唯一标明一场活动,活动举办地点适配表活动_区域,通过行为代码与主表进行关联,活动奖品表活动_sku,通过行为代码与主表进行关联。

活动主表

创建表"活动_主要"(

` id bigint(20)NOT NULL AUTO _ INCREMENT,

` act _ code varchar(255)不为空注释活动代码,

` act _ name varchar(255)不为空注释活动名称,

主键(` id `),

唯一键` uniq_code` (`act_code `)

)ENGINE=InnoDB AUTO _ INCREMENT=1 DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci COMMENT=活动主表

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

创建表`活动区域`(

` id bigint(20)NOT NULL AUTO _ INCREMENT,

` act _ code varchar(255)不为空注释活动代码,

` area varchar(255)不为空注释参与此活动的网站,

主键(` id `)

)ENGINE=InnoDB AUTO _ INCREMENT=1 DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci COMMENT=活动适配的网站列表

活动奖品表

创建表` activity_sku `(

` id bigint(20)NOT NULL AUTO _ INCREMENT,

` act _ code varchar(255)不为空注释活动代码,

“SKU”varchar(255)不为空注释活动赠送的商品,

主键(` id `)

)ENGINE=InnoDB AUTO _ INCREMENT=1 DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci COMMENT=活动赠品表

比较使用存在和在…里的查询

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

# 查询体重秤

select * from activity _ main where act _ code in(

从活动_sku中选择act_code,其中sku=翎野君的体脂称

)

# 查询体重秤

select * from activity _ main a where exists(

从活动_sku b中选择1,其中 a.act_code=b.act_code,b.sku=翎野君的体脂称

)

# 模糊查询贝科英国婴儿推车

select * from activity _ main where act _ code in(

从活动_sku中选择act_code,其中库存单位类似于" %B-BEKO% "

)

# 模糊查询贝科英国婴儿推车

select * from activity _ main a where exists(

从活动_sku b中选择1,其中a.act_code=b.act_code,B . SKU喜欢“% 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(

从活动_领域b中选择1,其中 a.act_code=b.act_code,b.area=博客园

)

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

select * from activity _ main where act _ code in(

select act _ code from activity _ area where area=博客园和行为代码在(

从活动_sku中选择act_code,其中sku=华为P30Pro

))

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

select * from activity _ main a where exists(

从活动_领域b中选择1,其中 a.act_code=b.act_code,b.area=博客园并且存在

(从活动_sku c中选择1,其中a.act_code=c.act_code,c.sku=华为p30专业版’)

)

以上就是关系型数据库存在用法小结的详细内容,更多关于关系型数据库存在用法的资料请关注我们其它相关文章!

Mysql exists用法小结