加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL锋利的子查询

发布时间:2021-05-23 17:43:42 所属栏目:编程 来源:互联网
导读:个中,操纵符可所以较量运算符和 IN、NOT IN、EXISTS、NOT EXISTS 等要害字。 1)IN | NOT IN 当表达式与子查询返回的功效齐集的某个值相称时,返回 TRUE,不然
个中,操纵符可所以较量运算符和 IN、NOT IN、EXISTS、NOT EXISTS 等要害字。
1)IN | NOT IN 当表达式与子查询返回的功效齐集的某个值相称时,返回 TRUE,不然返回 FALSE;若行使要害字 NOT,则返回置魅正好相反。 2)EXISTS | NOT EXISTS 用于判定子查询的功效集是否为空,若子查询的功效集不为空,返回 TRUE,不然返回 FALSE;若行使要害字 NOT,则返回的置魅正好相反。
例 1 行使子查询在 tb_students_info 表和 tb_course 表中查询进修 Java 课程的门生姓名,SQL 语句和运行功效如下。 mysql> SELECT name FROM tb_students_info -> WHERE course_id IN (SELECT id FROM tb_course WHERE course_name = 'Java'); +-------+ | name | +-------+ | Dany | | Henry | +-------+ 2 rows in set (0.01 sec) 功效表现,进修 Java 课程的只有 Dany 和 Henry。上述查询进程也可以分为以下 2 步执行,实现结果是沟通的。

1)起首单独执行内查询,查询出 tb_course 表中课程为 Java 的 id,SQL 语句和运行功效如下。 mysql> SELECT id FROM tb_course -> WHERE course_name = 'Java'; +----+ | id | +----+ | 1 | +----+ 1 row in set (0.00 sec) 可以看到,切合前提的 id 字段的值为 1。

2)然后执行外层查询,在 tb_students_info 表中查询 course_id 便是 1 的门生姓名。SQL 语句和运行功效如下。 mysql> SELECT name FROM tb_students_info -> WHERE course_id IN (1); +-------+ | name | +-------+ | Dany | | Henry | +-------+ 2 rows in set (0.00 sec) 风俗上,外层的 SELECT 查询称为父查询,圆括号中嵌入的查询称为子查询(子查询必需放在圆括号内)。MySQL 在处理赏罚上例的 SELECT 语句时,执行流程为:先执行子查询,再执行父查询。
例 2 与例 1 相同,在 SELECT 语句中行使 NOT IN 要害字,查询没有进修 Java 课程的门生姓名,SQL 语句和运行功效如下。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读