sql嵌套查询例子_sql的多表数据嵌套查询

sql嵌套查询例子_sql的多表数据嵌套查询SQL嵌套查询示例现需要查询学生上课人数超过“EasternHeretic”的任意一门课的学生人数的课程信息,请使用ANY操作符实现多行子查询。(Lintcode刷题记录)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

查询学生上课人数超过 “Eastern Heretic” 的任意一门课的学生人数的课程信息,请使用 ANY 操作符实现多行子查询。(Lintcode刷题记录)

Courses表:

列名 类型 注释
id int unsigned 主键
name varchar 课程名称
student_count int 学生总数
created_at datetime 课程创建时间
teacher_id int unsigned 讲师 id

Teachers表:

列名 类型 注释
id int unsigned 主键
name varchar 讲师姓名
email varchar 讲师邮箱
age int 讲师年龄
country varchar 讲师国籍

本题涉及到多层的嵌套:

第一层的父查询为在课程表 courses 中查询满足条件的全部课程信息,这个条件由子查询来完成,即为,查询学生上课人数超过 ”Eastern Heretic“ 的任意一门课的学生人数。这一部分的子查询中需要结合 ANY 操作符实现。之后,再将子查询进行拆分,形成第二层的嵌套子查询。

第二层的父查询为在课程表 courses 中根据教师 id 查询学生上课人数, 其子查询为在教师表 teachers 中查找教师名 name 为 “Eastern Heretic” 的教师 id。

条件限制:由于我们最终得到的课程信息中肯定不包含 “Eastern Heretic” 的课程,所以我们要在 WHERE 条件中再设置一项:不为 “Eastern Heretic” 所开的课程 。

结合以上,使用 SQL 中子查询的方式如下:)

SELECT *
FROM `courses`
WHERE `student_count` > ANY (
		SELECT `student_count`
		FROM `courses`
		WHERE `teacher_id` = (
			SELECT `id`
			FROM `teachers`
			WHERE `name` = 'Eastern Heretic'
		)
	)
-- <> 代表不等于,也可以用!= 但是有些数据库会报错,例如SQL2000 —--
	AND `teacher_id` <> (
		SELECT `id`
		FROM `teachers`
		WHERE `name` = 'Eastern Heretic'
	);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169399.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 为Eclipse指定Java VM[通俗易懂]

    重装系统后,Eclipse无法启动,说找不到JavaVM.   网上搜了一下,解决方法如下:   创建快捷方式,右键快捷方式,打开属性.在目标处输入” -vm你的Java根目录\jre\bin\javaw.exe”.然后用快捷方式打开就可以了.

  • 电视处理器a53和a55哪个厉害(cortexa55处理器好吗)

    小编语:手机处理器从32位向64位的迁移过程中,功耗增加以及给手机厂商带来的散热成为一个很大的问题。目前Cortex-A57已经是64位手机处理器芯片的主流内核,它的功耗不降下来,更多手机功能的开发可能受限于系统总功耗而无法实现,ARM这次推出的Cortex-A35显然在这方面下了不少功夫,究竟能给手机厂商带来多少实惠,还要等终端产品推出后才见分晓……64位元处理器应用版图…

  • 详细了解 clientWidth、clientHeight、clientLeft、clientTop 以及几个常用的场景

    详细了解 clientWidth、clientHeight、clientLeft、clientTop 以及几个常用的场景clientLeft、clientHeight、clientWidth、clientHeightclientWidth、clientHeight元素内部宽度和高度,clientLeft、clientTop获取元素内边距边框到边框的距离.大概如下图所示:clientWidth属性表示元素的内部宽度,以像素计。该属性包括内边距,但不包括垂直滚动条(如果有)、边框和外边距。如上图所示,计算方式为,分为如下两种:存在垂直滚动条 contentwidth+paddin…

  • Java Web前端基础

    Java Web前端基础JavaWeb的学习是需要一定的计算机基础的,主要有前端基础和Java基础和一定的网络基础,这些基础知识还是需要掌握到一定的程度的。本文主要介绍前端接触,共包括HTML、CSS和JavaScript,学习的过程中,还是要多动手。

  • Android之ViewStub的简单使用

    Android之ViewStub的简单使用1.viewstub就是动态加载试图;也就是在我们的app启动绘制页面的时候,他不会绘制到view树中;当在代码中执行inflate操作后,她才会被添加到试图中。其实ViewStub就是一个宽高都为0的一个View,它默认是不可见的,只有通过调用setVisibility函数或者Inflate函数才会将其要装载的目标布局给加载出来,从而达到延迟加载的效果,这个要被加载的布局通过android:l…

  • maven打包命令[通俗易懂]

    maven打包命令[通俗易懂]打包步骤是:清除,打包一般的maven项目打包命令是:mvncleanpackagemvnclean打包前清理掉之前有过打包的文件夹targetmvncompile项目编译mvnpackage开始项目打包执行这步可以不用执行compile了package包括了编译、打包这两步package完成后,会自动生成一个target文件,根据你编写的pom打包命令和assemb…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号