当前位置: 首页 > article >正文

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

EXISTS 运算符

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

语法

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

 实例1

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

Websites

access_log

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 

 表格如下: 

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

 

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

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

 


NOT EXISTS 运算符

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

语法

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

实例1 

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

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号课程 的学号

-- 选择 学生的学号
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.kler.cn/a/393075.html

相关文章:

  • sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?
  • 微服务(二)
  • DataWorks on EMR StarRocks,打造标准湖仓新范式
  • CSS多列布局:打破传统布局的束缚
  • 【专题】计算机网络之网络层
  • Nuxt 版本 2 和 版本 3 的区别
  • 超文本协议和内外网的划分(详见B站泷羽sec)
  • PostCSS 介绍
  • fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧
  • 用户管理【MySQL】
  • 社区物资交易互助平台(程序+数据库+报告)
  • opencv(c++)图像的灰度转换
  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • 推荐一款好用的postman替代工具2024
  • php 字符串与变量
  • web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
  • 第四十五章 Vue之Vuex模块化创建(module)
  • 十大经典排序算法-希尔排序与归并排序
  • Ubuntu 安装和使用 1Panel
  • 电工电子原理笔记
  • 应用程序部署(IIS的相关使用,sql server的相关使用)
  • Java项目实战II基于微信阅读网站小程序的设计与实现(开发文档+数据库+源码)
  • 【VLANPWN】一款针对VLAN的安全研究和渗透测试工具
  • 谷歌邮箱域名设置指南:轻松管理电子邮件!
  • 使用JS实现文件流转换excel?
  • 【深度解析】CSS工程化全攻略(1)