返回顶部
首页 > 资讯 > 数据库 >SQLServer中exists和except用法
  • 455
分享到

SQLServer中exists和except用法

2024-04-02 19:04:59 455人浏览 八月长安
摘要

一、exists1.1 说明EXISTS(包括 NOT EXISTS)子句的返回值是一个BOOL值。EXISTS内部有一个子查询语句(SELECT ... FROM...),我将其称为EXIST的内

一、exists

1.1 说明

EXISTS(包括 NOT EXISTS)子句的返回值是一个BOOL值。EXISTS内部有一个子查询语句(SELECT ... FROM...),我将其称为EXIST的内查询语句。其内查询语句返回一个结果集。EXISTS子句根据其内查询语句的结果集空或者非空,返回一个布尔值。Link

exists:强调的是是否返回结果集,不要求知道返回什么,比如:select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因。Link

相对于inner join,exists性能要好一些,当她找到第一个符合条件的记录时,就会立即停止搜索返回TRUE。

1.2 示例
--EXISTS
--sql:
select name from family_member
where group_level > 0
and exists(select 1 from family_grade where family_member.name = family_grade.name
and grade > 90)
--result:
name
cherrie
--NOT EXISTS
--SQL:
select name from family_member
where group_level > 0
and not exists(select 1 from family_grade where family_member.name = family_grade.name
and grade > 90)
--result:
name
mazey
rabbit

二、except

2.1 说明

查询结果上EXCEPT = NOT EXISTS,INTERSECT = EXISTS,但是EXCEPT / INTERSECT的「查询开销」会比NOT EXISTS / EXISTS大很多。

except自动去重复,not in / not exists不会。

2.2 示例
--except
--SQL:
select name from family_member
where group_level > 0
except(select name from family_grade)
--result:
name
rabbit
--NOT EXISTS
--SQL:
select name from family_member
where group_level > 0
and not exists(select name from family_grade where family_member.name = family_grade.name)
--result:
name
rabbit
rabbit

三、测试数据

-- ----------------------------
-- Table structure for family_grade
-- ----------------------------
DROP TABLE [mazeytop].[family_grade]
Go
CREATE TABLE [mazeytop].[family_grade] (
[id] int NOT NULL ,
[name] varchar(20) NULL ,
[grade] int NULL 
)


GO

-- ----------------------------
-- Records of family_grade
-- ----------------------------
INSERT INTO [mazeytop].[family_grade] ([id], [name], [grade]) VALUES (N'1', N'mazey', N'70')
GO
GO
INSERT INTO [mazeytop].[family_grade] ([id], [name], [grade]) VALUES (N'2', N'cherrie', N'93')
GO
GO

-- ----------------------------
-- Table structure for family_member
-- ----------------------------
DROP TABLE [mazeytop].[family_member]
GO
CREATE TABLE [mazeytop].[family_member] (
[id] int NOT NULL ,
[name] varchar(20) NULL ,
[sex] varchar(20) NULL ,
[age] int NULL ,
[group_level] int NULL 
)


GO

-- ----------------------------
-- Records of family_member
-- ----------------------------
INSERT INTO [mazeytop].[family_member] ([id], [name], [sex], [age], [group_level]) VALUES (N'1', N'mazey', N'male', N'23', N'1')
GO
GO
INSERT INTO [mazeytop].[family_member] ([id], [name], [sex], [age], [group_level]) VALUES (N'2', N'cherrie', N'female', N'22', N'2')
GO
GO
INSERT INTO [mazeytop].[family_member] ([id], [name], [sex], [age], [group_level]) VALUES (N'3', N'rabbit', N'female', N'15', N'3')
GO
GO
INSERT INTO [mazeytop].[family_member] ([id], [name], [sex], [age], [group_level]) VALUES (N'4', N'rabbit', N'female', N'15', N'3')
GO
GO

-- ----------------------------
-- Table structure for family_part
-- ----------------------------
DROP TABLE [mazeytop].[family_part]
GO
CREATE TABLE [mazeytop].[family_part] (
[id] int NOT NULL ,
[group] int NULL ,
[group_name] varchar(20) NULL 
)


GO

-- ----------------------------
-- Records of family_part
-- ----------------------------
INSERT INTO [mazeytop].[family_part] ([id], [group], [group_name]) VALUES (N'1', N'1', N'父亲')
GO
GO
INSERT INTO [mazeytop].[family_part] ([id], [group], [group_name]) VALUES (N'2', N'2', N'母亲')
GO
GO
INSERT INTO [mazeytop].[family_part] ([id], [group], [group_name]) VALUES (N'3', N'3', N'女儿')
GO
GO

-- ----------------------------
-- Indexes structure for table family_grade
-- ----------------------------

-- ----------------------------
-- Primary Key structure for table family_grade
-- ----------------------------
ALTER TABLE [mazeytop].[family_grade] ADD PRIMARY KEY ([id])
GO

-- ----------------------------
-- Indexes structure for table family_member
-- ----------------------------

-- ----------------------------
-- Primary Key structure for table family_member
-- ----------------------------
ALTER TABLE [mazeytop].[family_member] ADD PRIMARY KEY ([id])
GO

-- ----------------------------
-- Indexes structure for table family_part
-- ----------------------------

-- ----------------------------
-- Primary Key structure for table family_part
-- ----------------------------
ALTER TABLE [mazeytop].[family_part] ADD PRIMARY KEY ([id])
GO

SQLServer中exists和except用法

您可能感兴趣的文档:

--结束END--

本文标题: SQLServer中exists和except用法

本文链接: https://lsjlt.com/news/42364.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQLServer中exists和except用法
    一、exists1.1 说明EXISTS(包括 NOT EXISTS)子句的返回值是一个BOOL值。EXISTS内部有一个子查询语句(SELECT ... FROM...),我将其称为EXIST的内...
    99+
    2024-04-02
  • SQLServer中exists和except用法介绍
    目录一、exists1.1 说明1.2 示例1.3 intersect/2017-07-21二、except2.1 说明2.2 示例三、测试数据一、exists 1.1 说明 EXI...
    99+
    2024-04-02
  • SQLServer中exists和except怎么使用
    这篇文章主要介绍“SQLServer中exists和except怎么使用”,在日常操作中,相信很多人在SQLServer中exists和except怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL...
    99+
    2023-06-21
  • oracle中的exists 和not exists 用法详解
    在Oracle中,EXISTS和NOT EXISTS是用来检查子查询是否返回任何行的条件运算符。- EXISTS:当子查询返回至少一...
    99+
    2023-09-12
    Oracle
  • sql中except的用法
    except 运算符从两个查询的结果集中查找不在第一个查询结果集中的行。示例:假设我们有两个表:table1 和 table2,分别包含记录 (1, 'john') 和 (2, 'mar...
    99+
    2024-05-15
  • SQLServer中EXISTS结构如何使用
    这期内容当中小编将会给大家带来有关SQLServer中EXISTS结构如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  如何巧妙利用SQLServer的EXIST...
    99+
    2024-04-02
  • 详细聊聊sql中exists和not exists用法
    目录exists:exists 和in 的区别not exists详细介绍:附案例分析总结之所以要说这个问题,是因为项目中用到了not exists,但两者写的语句只有一点差别,结果...
    99+
    2024-04-02
  • 详细聊聊sql中exists和not exists用法
    在SQL中,EXISTS和NOT EXISTS是用于判断子查询中是否存在或不存在记录的条件运算符。1. EXISTS用法:EXIST...
    99+
    2023-08-08
    SQL
  • 使用SQL中的EXISTS和NOT EXISTS的语法
    SQL中的exists和not exists的用法,需要具体的代码示例 在SQL中,exists和not exists是一对常用的谓词(predicate),用于判断一个子查询(sub...
    99+
    2024-02-22
    sql用法
  • python中try...except的用法
    try...except 语句是一种错误处理机制,用于在代码块执行期间捕获并处理异常(错误),具体用法如下:try 块包含可能引发异常的代码。except 块使用 as 子句指定要捕获的...
    99+
    2024-05-15
    python 代码可读性
  • sql中exists和not exists怎么用
    这篇文章主要介绍了sql中exists和not exists怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。exists:强调的是是否有返回集,不需知道具体返回...
    99+
    2023-06-29
  • sql中exists和not exists怎么使用
    在SQL中,EXISTS和NOT EXISTS是用来检查子查询是否返回结果的条件表达式。- EXISTS:如果子查询返回至少一行结果...
    99+
    2023-08-16
    sql
  • sql中exists用法
    exists 是 sql 中的一个布尔运算符,用于检查子查询是否返回任何行。它与子查询一起使用,子查询返回布尔值以确定是否存在满足条件的行。exists 主要用于确定与主表特定行匹配的行...
    99+
    2024-05-15
  • MySQL中EXISTS的用法
    在MySQL中,EXISTS是一个用于检查子查询是否返回结果的关键字。它的基本语法如下:```SELECT 列名FROM 表...
    99+
    2023-09-14
    MySQL
  • mysql中EXISTS和IN的使用方法比较
    1、使用方式: (1)EXISTS用法 select a.batchName,a.projectId from ucsc_project_batch a wher...
    99+
    2024-04-02
  • SQL 中 EXISTS 用法详解
    EXISTS 是 SQL 中的一个逻辑运算符,用于判断一个子查询是否返回了结果。它返回一个布尔值,如果子查询返回至少一行结果,则返回...
    99+
    2023-10-08
    SQL
  • sql中exists具体用法
    exists 子查询用于检查外层查询中的行是否存在匹配记录,用法如下:包含在 select 语句的 where 子句中。返回布尔值 true (存在匹配) 或 fal...
    99+
    2024-05-15
  • oracle中exists的使用方法
    小编给大家分享一下oracle中exists的使用方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!exists后面接的是一个子查询...
    99+
    2024-04-02
  • mysql中exists的用法详解
    前言 在日常开发中,用mysql进行查询的时候,有一个比较少见的关键词exists,我们今天来学习了解一下这个 exists这个sql关键词的用法,这样在工作中遇到一些特定的业务场景就可以有更加多样化的解决方案 语法解释 语法 SELEC&...
    99+
    2023-08-16
    mysql 数据库 database exists in
  • VBS中Exists方法的使用
    本篇内容介绍了“VBS中Exists方法的使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Exists 方法如果在 Dictionary ...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作