sql集合运算符使用方法

时间:2024-01-26 08:18:13 

(1)IN运算符:它可以用来匹配一个固定集合中的某一项。比如说一个集合里面的年份有(2001,2003,2005),那么就可以有:


SELECT * FROM T_Book
WHERE FYearPublished IN(2001,2003,2005)

IN运算符,除了支持从固定的集合里面去匹配,当然也支持动态的集合方式去匹配。比如如下方式:


SELECT * FROM T_Reader
WHERE FYearOfJoin IN
(
select FYearPublished FROM T_Book
)

(2)ANY和SOME集合运算符:在SQL SERVER里面,ANY和SOME是同义词,二者的用法和功能一样(一样还搞两个,不知道是不是蛋疼)。相比于IN运算符,ANY和SOME需要与其它的比较符(大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等)共同使用,而且比较符需要在它们的前面。


SELECT * FROM T_Reader
WHERE FYearOfJoin =ANY
(
select FYearPublished FROM T_Book
)

注意:和IN 运算符不同,ANY 和SOME运算符不能与固定的集合相匹配,比如下面的SQL 语句是错误的:


SELECT * FROM T_Book
WHERE FYearPublished<ANY(2001,2003,2005)

(3)ALL集合运算符:在SQL SERVER里面,ALL运算符也需要与其它的比较符(大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等)共同使用,而且比较符需要在它们的前面。


SELECT * FROM T_Book
WHERE FYearPublished<ALL
(
SELECT FYearOfJoin FROM T_Reader
)


注意:

I、与ANY和SOME 运算符相同,ALL 运算符同样不能与固定的集合相匹配,比如下面的SQL 语句是错误的:


SELECT * FROM T_Book
WHERE FYearPublished<ALL(2001,2003,2005)

II、关于使用ALL运算符,还有一项需要注意,那就是这个ALL子查询结果为空时,匹配的结果并不是以空的方式来处理,而是相当于全部匹配成功。所以在使用ALL运算符的时候,这一个问题很容易在系统中造成BUG,因此使用时必须注意。比如:


SELECT * FROM T_Book
WHERE FYearPublished<ALL
(
SELECT FYearOfJoin FROM T_Reader
WHERE FProvince = 'JiangSu'
)

如果ALL子查询的结果为空时,则将会取SELECT FYearOfJoin FROM T_Reader的全部结果来作为成功匹配的结果。

(4)EXISTS集合运算符:和IN、ANY、SOME、ALL等运算符不同,EXISTS运算符是单目运算符,它不与列匹配,因此它也不要求待匹配的集合是单列的。EXISTS运算符用来检查每一行是否匹配子查询,可以认为EXISTS就是用来测试子查询的结果是否为空,如果结果集为空则匹配结果为false,否则匹配结果为true。


SELECT * FROM T_Category
WHERE EXISTS
(
SELECT * FROM T_Book
WHERE T_Book. FCategoryId = T_Category.FId
AND T_Book. FYearPublished<1950
)


在EXISTS后的子查询中,SQL对T_Category表中的每一行数据到子查询中进行匹配,测试T_Book 表中是否存在FCategoryId 字段值等于当前类别主键值且出版年份在1950 年之前的书籍。

标签:集合运算符
0
投稿

猜你喜欢

  • W3C Group的JavaScript1.8新特性介绍

    2009-07-24 12:31:00
  • asp禁止站外盗链、判断星期几方法

    2007-10-02 12:58:00
  • pandas分区间,算频率的实例

    2021-12-12 01:27:24
  • 为什么Mysql 数据库表中有索引还是查询慢

    2024-01-25 03:20:26
  • 介绍讲解MySQL安装下载登录

    2010-10-25 20:34:00
  • python 执行文件时额外参数获取的实例

    2022-09-24 05:46:54
  • PHP使用JpGraph绘制折线图操作示例【附源码下载】

    2024-05-03 15:34:31
  • python不同版本的_new_不同点总结

    2023-09-21 15:36:45
  • Linux/Mac MySQL忘记密码命令行修改密码的方法

    2024-01-26 04:42:12
  • 谈谈设计师的发展

    2009-03-17 18:20:00
  • python中sleep函数用法实例分析

    2023-10-19 15:33:24
  • “Unable to read local eventlog (reason:事件日志文件已在读取时间更改)”解决办法

    2009-08-27 13:12:00
  • python3 tcp的粘包现象和解决办法解析

    2022-08-02 02:22:53
  • Python工程师面试题 与Python基础语法相关

    2021-07-08 16:20:50
  • Echarts基本入门之柱状图、折线图通用配置

    2024-04-28 09:37:10
  • Python 列表排序方法reverse、sort、sorted详解

    2021-10-18 10:11:52
  • 后端开发使用pycharm的技巧(推荐)

    2021-11-16 14:50:07
  • 简单谈谈Python中的反转字符串问题

    2022-02-24 11:55:07
  • python中mediapipe库踩过的坑实战记录

    2021-03-07 13:32:47
  • go语言实现mqtt协议的实践

    2024-04-23 09:34:38
  • asp之家 网络编程 m.aspxhome.com