您当前的位置: 首页 >  sql

网易测试开发猿

暂无认证

  • 1浏览

    0关注

    221博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MySQL子查询(嵌套查询)-----详细

网易测试开发猿 发布时间:2021-11-19 17:06:27 ,浏览量:1

MySQL子查询(嵌套查询)

一、子查询 1、子查询允许把一个查询嵌套在另一个查询当中(也就是嵌套查询)

2、子查询可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、 limit、join和union等,但是对应的外部查询必须是以下语句之一:select、insert、update、delete、set或者do

二、子查询的分类 1、表子查询:   ------返回的结果集是 N 行 N 列

2、标量子查询:   ------返回单一值的标量,最简单的形式

3、列子查询:   ------返回的结果集是 N 行 1 列

4、行子查询:   ------返回的结果集是 1 行 N 列

可以使用的操作符: = , >, =, , < ,>=, ANY (SELECT s2 FROM table2);

SELECT s1 FROM table1 WHERE s1>ALL (SELECT s2 FROM table2);	

4、行子查询 : 指子查询返回的结果集是: 1 行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集

SELECT * FROM article WHERE (title,content,uid)=(SELECT title, content,uid FROM blog WHERE bid=2);

  四、EXISTS谓词 EXISTS是一个非常牛叉的谓词,它允许数据库高效地检查指定查询是否产生某些行

select * from t1 where city='shanghai' and EXISTS(select * from t2 where t1.cid=t2.cid);	

例如: 查询 x1 表中 name 字段下是否有 zhangsan,若有则查询 x1 表中的记录,否则不查询

select * from x1 where EXISTS(select name from fruits where name='zhangsan');

查询 x1 表中是否存在 num=7 的记录,若存在,则查询 x1 表中 success 大于 80 的记录

select * from x1 where success>80 and EXISTS (select num from x1 where num=7);

相反,可以使用 not exists 查询不存在(用法相同)

关注
打赏
1665054478
查看更多评论
立即登录/注册

微信扫码登录

0.0429s