MySQL从删库到跑路(6):子查询

 “小伙子,今天你怎么不开心?”

 “前辈,今天我看见了一个漂亮姑娘,淡黄色的长裙,蓬松的头发,她是那么的漂亮,我是那么的卑微……”

 “你是不是像知道那姑娘姓甚名谁,芳龄几何,可否婚配,这样即便是无法与她共结良缘,你也死而无憾!”
 “生我者父母,知我者前辈!”

 “”要解开你的这个心结,今天我们需要学习两个知识点和一张新表。“

1.模糊匹配
2.子查询
3.human_active_record(人类行为记录表)

首先,humanbase_info那张表,已经无法满足你日益增长的物质文化需要了,因为那里面没有记载穿着、发型相关的信息,而这些信息恰好都记录在human_active_record里面

其次,因为你只知道那位姑娘的部分特征,所以我们只能按照那些部分特征在human_active_record表里面进行模糊匹配

最后,我们把human_active_record查询的结果当做条件,放到human_base_info中当做查询条件,就可以成功找到那位姑娘了

在这里插入图片描述
 这就是human_active_record记录的信息,包括id_card(身份证唯一标识,事件发生时间,人物特征,具体事件)。如果你想要找到的那个穿着淡黄色长裙,蓬松头发的妹子,你只需要用你已知的条件模糊搜索、匹配一番就可以了。

模糊匹配,like的通配符用法

1.%(百分号)

 %是SQL中最常用的一种方法,它表示任何字符出现的任意次数(0到无数次),因此如果想要找一个人的特征有“淡黄色的长裙” 同时还有“蓬松的头发,”那么就可以写作 like ‘%淡黄色的长裙%蓬松的头发%’

 这样写的写法就表示,不管你的特征里面是只有“淡黄色的长裙” 、“蓬松的头发”,还是说特征里面含有其他的特征,我的SQL都会把你一网打尽。

SELECT
	* 
FROM
	human_active_record 
WHERE
	feature LIKE '%淡黄色的长裙%蓬松的头发%'

在这里插入图片描述
 一共查询出两个人,从查询结果来看,似乎并不能分辩两个人里面谁是李有为遇见的那个。这个时候,就需要子查询排上用场了。
子查询:顾名思义就是查询里面的查询。在一个查询里面使用另外一个查询的结果,这个“另外一个查询就是子查询。”

原本,我要找到那个女孩的信息,我需要两步,第一:从human_active_record里面找打她对应的id_card,然后在用id_card去human_base_info表里查询对应的信息。

-- 1、先找id_crad
SELECT
	id_card 
FROM
	human_active_record 
WHERE
	feature LIKE '%淡黄色的长裙%蓬松的头发%'
--找到id_card结果 hx362423197509066370 hx362402198701270041
-- 然后再用对应的id_card去匹配信息
SELECT
	* 
FROM
	human_base_info 
WHERE
	id_card IN ( 
	'hx362423197509066370','hx362402198701270041'
	)

在这里插入图片描述
 以上SQL虽然能够实现,但是未免有些麻烦,如果有了子查询之后,一句SQL就可以搞定如下功能

子查询

SELECT
	* 
FROM
	human_base_info 
WHERE
	id_card IN ( 
		SELECT
		id_card 
	FROM
		human_active_record 
	WHERE
		feature LIKE '%淡黄色的长裙%蓬松的头发%'
	)

在这里插入图片描述

总结:
1、子查询的灵魂就是:把一个查询的结果,当做另一个查询的条件
2、子查询的结果必须是单列,但凡是多列,肯定会报错

 仔细比对了一下查询出来的结果,李有为回想了一下昨天的场面,那个妹子年龄应该二十出头,各自在175左右,那个时候他们是在图书馆附近遇到的,所以李有为立马就锁定了目标,原来昨天那个仙女一样的妹子名叫“冯吹雨”."吹雨、吹雨"正是一个特别的名字啊。

"你给老子开锤子的小差,老子知识点都还没讲完,你是不是不想学了。"

 听完大爷的训斥,李有为赶忙回过神来,继续学习like 模糊匹配剩下的三种用法。

2、like之_(下划线)

 "_"表示任意单个字符。匹配单个任意字符。李有为对名字三个字,且最后一个字是“雨”女生情有独钟,因此要想找到这些女生,他只需要这么做。

SELECT
	* 
FROM
	human_base_info 
WHERE
	name like '__雨'
and sex='F'

在这里插入图片描述

3、MySQL还有正则的模糊匹配,但是由于涉及到正则表达式,所以这里暂时不说,以后再说。

装逼试炼大会一天天逼近,大爷每天讲解的指示虽然有用,可是似乎并不能帮助李有为一鸣惊人,前路扑朔迷离,还有六天,前面究竟还有什么神奇的事情在等着李有为,预知后事如何,请听下回分解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章