MySQL笔记-子查询与集合运算

一、子查询


子查询指在一个查询中嵌套另一个查询,可以多层嵌套。

常出现在两个位置:

1)、from子句后:此用法也被称为行内视图,因为该子查询的实质就是一个临时视图。

2)、where子句后:作为过滤条件的值。


1、from子句后

例:SELECT * FROM (SELECT * FROM student_table) t WHERE t.java_teacher>1;

说明:上面语句中,为子查询起了别名t。


2、where子句后

单列:

例:#与in函数搭配(作用同=any(……))

SELECT * FROM student_table WHERE student_id IN (SELECT teacher_id FROM teacher_table);

#与any函数搭配,比较值

…… >|>=|<|<=|<>|= ANY( SELECT singleColumnName FROM tableName);

说明:>与<分别对应大于括号内最大值与最小值即可。any可换位all,对应比较all函数内的全部值。

多列:

使用括号。

返回两个列语法:

select * from tableName1 

where (columnName1,columnName2)

=any(select column_name1,column_name2 from tableName2);

二、集合运算


select语句查询的结果是一个包含多条数据的结果集,类似数学里的集合,可进行交(intersect)、并(union)、差(minus)运算。

注:MySQL并不支持交与差运算,考虑用子查询(差)或多表连接查询(交)代替!


1、intersect(交)

语法:select 语句 intersect select 语句;

结果:为两个select语句结果集的交集(数据列数、对应类型应一致,对应列名可不同,结果中取第一个select的列名)。


2、union(并)

select 语句 union select 语句;

结果:两结果集的并集(同上)。


3、minus(差)

select 语句 minus select 语句;

结果:第一个select语句的结果集减去第二个select的结果集。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值