【SQL】双层嵌套< exists not exists >

ops/2024/11/17 19:11:23/

EXISTS 运算符

        EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

语法

sql">SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

 实例1

查找总访问量(count 字段)大于 200 的网站是否存在。返回网站名,地址

Websites

access_log

sql">SELECT Websites.name, Websites.url 
FROM Websites 
WHERE EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);

 


实例2 

 表格如下: 

sql">Create table `sc`( `sno`  char(10),-- 学生学号`cno`  char(3), -- 课程号`grade`  int ,-- 分数
Primary key(`sno`,`cno`));

 

查找出选了001号课程和003号课程的学生,返回学号。

sql">select s1.sno -- 选择学生
from sc s1 -- 对于这个同学
where exists(-- 存在select s2.sno from sc s2where s1.sno=s2.sno and s1.cno='001' and s2.cno='003'-- 选了001号和003号
);

 


NOT EXISTS 运算符

查找出不符合查询语句的记录。

语法

sql">SELECT column_name(s)
FROM table_name
WHERE NOT EXISTS
(SELECT column_name FROM table_name WHERE condition);

实例1 

返回 访问量没有超过200的网站。

sql">SELECT Websites.name, Websites.url 
FROM Websites 
WHERE NOT EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);

 

 实例2

返回  学生选择1号课程没有选3号课程 的学号

sql">-- 选择 学生的学号
select s1.sno from sc s1 -- 对于这个学生where s1.Cno='001' and not EXISTS-- 选了课程号为001的,并且不存在这样的学生(选了001号和003号)(select s2.sno from sc s2-- 选择学生的学号where s2.sno=s1.sno and s2.Cno='003'-- 这个学生选了001号课程和003号课程)


http://www.ppmy.cn/ops/134506.html

相关文章

SQL集合运算

集合论是SQL语言的根基。 1 集合运算 注意事项: 1)SQL能操作具有重复行的集合,可以通过可选项ALL来支持。 如果直接使用UNION或INTERSECT,结果里不会出现重复的行。如果想在结果里留下重复行,可以加上可选项ALL。写…

推荐15个2024最新精选wordpress模板

以下是推荐的15个2024年最新精选WordPress模板,轻量级且SEO优化良好,适合需要高性能网站的用户。中文wordpress模板适合搭建企业官网使用。英文wordpress模板,适合B2C网站搭建,功能强大且兼容性好,是许多专业外贸网站的…

鸿蒙5.0版开发:使用HiLog打印日志(ArkTS)

在HarmonyOS 5.0中,HiLog是系统提供的一个日志系统,它允许应用和服务按照指定的级别、标识和格式字符串输出日志内容,帮助开发者了解应用的运行状态,更好地调试程序。本文将详细介绍如何在ArkTS中使用HiLog打印日志,并…

qt-5.11.3交叉编译

准备环境和工具 1、主机环境 ubuntu20 2、交叉编译器 gcc-linaro-6.3.1..arm-linux-gnuebihf 3、QT5源码包qt-5.11.3_sources 下载qt-5.11.3的包需要先带网络代理软件,再访问下载目录就可以显示了。 Index of /archive/qt 4、依赖库安装 sudo apt install g m…

单片机 串口实验 实验五

实验五 串口实验 一、实验目的 1、掌握MCS-51单片机串口通信的原理。 2、掌握MCS-51单片机串口通信程序的设计方法及其过程。 3、掌握MCS-51单片机串口通信的电路应用。 二、实验任务 两片单片机分别接一个按键和两个数码管,通过串口通信,实现单…

【学习】HTTP

HTTP 超文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型,客户端打开…

C/C++ 中有哪些类型转换方式? 分别有什么区别?

在C编写C/C代码的时候,我们经常会遇到发生类型转换的场景,比如 赋值运算符的两个操作数不同、实参和形参类型不同、函数返回值类型和接收返回值的类型不同,都会发生类型转换;所以,在C语言中提供了两种类型转换 —— 隐…

CSM32RV20:RISC-V核的低功耗MCU芯片,常用在智能门锁上

CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 内置RISC-V RV32IMAC内核(2.6CoreMark/MHz); 蕞高32MHz工作频率; 内置4kB的SRAM; 内置8B的ALWAYS寄存器,能在掉电模式2下保存数据; 内置40kB的嵌…