SQLserver中的any和all运算符的用法
打不完的代码 人气:0一,SQL Server Any 运算符
Any 是一个逻辑运算符 ,它将值与子查询返回的一组进行比较。any运算符必须要结合比较运算符使用,
>,>=,<,<=,=,<>开头,后面就是子查询
where 比较者 >any(子查询)
如果子查询不返回如何行,则条件计算结果为false,就是返回空的意思,进行不了比较。
如果子查询不返回零行,下面说明了any运算符与每个比较运算符一起使用的含义:
条件 | 含义 |
c = ANY (…) | c列中的值必须与集合中的一个或多个值匹配,以评估为true。 |
c != ANY (…) | c列中的值不能与集合中的一个或多个值匹配以评估为true。 |
c > ANY (…) | c列中的值必须大于要评估为true的集合中的最小值。 |
c < ANY (…) | c列中的值必须小于要评估为true的集合中的最大值。 |
c >= ANY (…) | c列中的值必须大于或等于要评估为true的集合中的最小值。 |
c <= ANY (…) | c列中的值必须小于或等于要评估为true的集合中的最大值。 |
示例:--29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
二,SQL Server All 运算符
All是一个逻辑运算符,它将单个值与子查询返回的单例值进行比较。
all运算符必须要结合比较运算符使用,>,>=,<,<=,=,<>开头,后面就是子查询
where 比较者 >all(子查询)
注意:如果子查询不返回任何行。则where子句中的条件始终未true,假设子查询返回一行或多行,下表
说明名了ALL运算符的含义:
条件 | 含义 |
c > ALL(…) | c列中的值必须大于要评估为true的集合中的最大值。 |
c >= ALL(…) | c列中的值必须大于或等于要评估为true的集合中的最大值。 |
c < ALL(…) | c列中的值必须小于要评估为true的集合中的最小值。 |
c <= ALL(…) | c列中的值必须小于或等于要评估为true的集合中的最小值。 |
c <> ALL(…) | c列中的值不得等于要评估为true的集合中的任何值。 |
c = ALL(…) | c列中的值必须等于要评估为true的集合中的任何值。 |
示例:--30、查询选修编号为“3-105”课程且成绩高于选修编号为“3-245”课程的同学的Cno、Sno,Degree.
总结:any和all的区别
他们又被称为多行子查询,一般是用于查询比较返回多行的数据,这两个运算符都是用于子查询,
any是任意,all是任何。这个任意和任何怎么理解呢?
好比如上面any和all的两个例子,都是大于号,any要大于子查询里面的最小一个,因为任一条数据满足外层查询都会被返回。all要大于里面最大的一个,任何就是包括集合里所有的数据。这就是我所理解的any和all。
加载全部内容