本章主要内容
前言
介绍子查询。
检索子查询
掌握概念与运用。
虚拟表子查询
掌握概念与运用。
条件子查询
掌握概念与运用。
总结
子查询语法
子查询(内查询) 在主查询之前一次执行完成。
子查询的结果被主查询使用(外查询)。
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
注意事项
子查询要包含在括号内。
将子查询放在比较条件的右侧。
通常情况下不要在子查询中使用ORDER BY 子句。
单行操作符对应单行子查询,多行操作符对应多行子查询。
子查询类型
主查询
子查询
返回
单行值
多行子查询
多行值
主查询
子查询
返回
单行子查询
单行子查询
只返回一行。
使用单行比较操作符。
操作符
=
>
>=
<
<=
<>
含义
Equal to
Greater than
Greater than or equal to
Less than
Less than or equal to
Not equal to
SELECT *
FROM TBL_SCOREINFO
WHERE SCORE = (
SELECT MIN(SCORE)
FROM TBL_SCOREINFO
)
在子查询中使用组函数
47
子查询中的 HAVING 子句
首先执行子查询。
向主查询中的HAVING 子句返回结果。
SELECT CLASSNO,MIN(SCORE)
FROM TBL_SCOREINFO
GROUP BY CLASSNO
HAVING MIN(SCORE) > (
SELECT MIN(SCORE)
FROM TBL_SCOREINFO
WHERE CLASSNO ='001'
)
47
SELECT *
FROM TBL_SCOREINFO
WHERE SCORE = (
SELECT MIN(SCORE)
FROM TBL_SCOREINFO
GROUP BY CLASSNO
)
非法使用子查询
多行子查询使用单行比较符
子查询中的空值问题
no rows selected
SELECT *
FROM TBL_SCOREINFO
WHERE SCORE = (
SELECT MIN(SCORE)
FROM TBL_SCOREINFO
WHERE CLASSNO = '004'
)
子查询不返回任何行
多行子查询
返回多行。
使用多行比较操作符。
操作符
IN
ANY
ALL
含义
等于列表中的任何一个
和子查询返回的任意一个值比较
和子查询返回的所有值比较
第08 子查询 来自淘豆网www.taodocs.com转载请标明出处.