MySQL数据库——子查询的基本操作

来源:互联网 发布:snmp linux 编辑:程序博客网 时间:2024/05/19 18:41

1.子查询定义

子查询(SubQuery)是指出现在其他SQL语句内的SELECT子句。

--例SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);/*1.SELECT * FROM t1,称为Outer Query/Outer Statement(外层查询/外层声明)2.SELECT col2 FROM t2,称为SubQuery*/

注意

1.子查询指嵌套在查询内部,且必须始终出现在圆括号内。
2.子查询可以包含多个关键字或条件,如:DISTINCT、GROUP BY、ORDER BY、LIMIT、函数等等。
3.子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET或DO。
4.子查询返回值,可以为标量、一行、一列或子查询。

2.比较运算符的子查询

--语法结构operand comparison_operator subquery;
--示例(假设所有前提条件都已满足)SELECT ROUND(AVG(price),2) FROM Store;--求出价格平均数,且保留小数点后两位SELECT id,name,price FROM Store WHERE price >= (SELECT ROUND(AVG(price),2) FROM Store);--使用子查询,求出大于等于平均价格的商品SELECT * FROM Store WHERE categ = '彩电'\G;--注意,查询可以使用中文

注意,在 比较 的时候,可能会出现返回多条结果
若是使用返回多条结果的子查询去 比较 则会报错
因为系统不知道,你是要和哪条返回结果去 比较
所以,就有了‘修饰比较修饰符’

--ANY,SOME,ALLoperand comparison_operator ANY (subquery);operand comparison_operator SOME (subquery);operand comparison_operator ALL (subquery);
ANY SOME ALL >、>= 最小值 最小值 <、<= 最大值 最大值 = 任意值 任意值 <>、!=
--示例(假设子查询有多个返回值)SELECT name,price FROM Store WHERE price > ANY (SELECT price FROM Store WHERE categ = '彩电');--对照上表,可以看出彩电返回的是返回值中的最小值

3.[NOT] IN的子查询

--语法结构operand comparison_operator [NOT] IN (subquery);--=ANY运算符与IN等效--!=ALL或<>ALL运算符与NOT IN等效

4.[NOT] EXISTS的子查询(不常用)

如果子查询返回任何行,EXISTS将返回TRUE;
否则为FALSE

0 0
原创粉丝点击