SQL语言的=ALL怎么用,WHERE子句中的。 是指集合包含的关系么?如果是谁包含谁
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语言的=ALL怎么用,WHERE子句中的。 是指集合包含的关系么?如果是谁包含谁相关的知识,希望对你有一定的参考价值。
纳尼,我看的PPT 有=ALL的写法...饿,那么想要表达一个集合A包含于另外一个集合B,怎么表达?快考试了,高手救命...
二楼,可是我想要的效果筛选出 选了所有课程的学生.你这个达不到啊
也就是说,学生所选的课程集合要正好等于 课程集合。
ALL 一般是用於> ,>=, <,<=,常用来表示大于(小于)某个集合的所有元素。
譬如
SELECT sno
FROM tab
WHERE age >=(55, 66, 77)是说年龄必须大于集合{55,66,77}的所有元素55 66 77
Clear now?
两个集合比较,可以用IN
SELECT *
FROM student
WHERE sno IN (Select sno from sc where cno = 'c001')
这个就是集合包含关系的一个最经典的例子。
子查询里面是选修了001课程的学生
sno in是凡是包含在 --〉选修了001课程的学生集合里面
没有达不到的,只有你想不到的
学生所选的课程集合要正好等于 课程集合
SELECT *
FROM SC
GROUP BY sno
HAVING COUNT(c_id) = (select count(*) from C)。 这样就达到目标了
SQL很灵活的,实际开发当中很少有人用ALL ANY的 参考技术A 用in呗
where id in (id1,id2,id3...) -- 括号里面也可以是子查询 参考技术B --------------------------------------------------------------------------------
--一个集合A包含于另外一个集合B(sqlserver )
declare @count int
select @count=count(*) from A where not exists
(select * from B where A.KeyID=B.KeyID)
if( @count=0)
print 'A被B包含'
else
print 'A不全包含于B'
--------------------------------------------------------------------------------
All的用法如下:
select * from dbo.收支表
where 金额>ALL (SELECT 金额 FROM dbo.台帐表)
表示在【收支表】中查找所有金额要大于【台帐表】中的所有的金额的收支记录
--------------------------------------------------------------------------------
另外还有ANY
select * from dbo.收支表
where 金额>ANY (SELECT 金额 FROM dbo.台帐表)
表示在【收支表】中查找金额只要大于【台帐表】中的任意一个金额的收支记录
--------------------------------------------------------------------------------
=ANY 运算符与 IN 等效
< >ANY 运算符则不同于 NOT IN:< >ANY 表示不等于 a,或者不等于 b,或者不等于 c。NOT IN 表示不等于 a、不等于 b 并且不等于 c。
<>ALL 与 NOT IN 表示的意思相同
=ALL 一般没有什么意义.本回答被提问者采纳
SQL中WHERE 和HAVING的区别
HAVING是先分组再筛选记录,WHERE在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后对组记录进行筛选。作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。 相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)
总结就两句话:
WHERE语句在GROUPBY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUPBY语句之后;SQL会在分组之后计算HAVING语句。 参考技术A having 和where 都是用来筛选用的
having 是筛选组 而where是筛选记录
他们有各自的区别
1》当分组筛选的时候 用having
2》其它情况用where
-----------------------------------------------------
用having就一定要和group by连用,
用group by不一有having (它只是一个筛选条件用的)
-------------------------------------------------------
例子
表结构
部门编号 姓名 工资
1 aa 2000
2 bb 1200
1 cc 2100
2 dd 1800
1 ee 2100
3 ff 8000
2 gg 2200
3 hh 4500
查询有多个员工的工资不低于2000的部门编号
(就是说如果一个部门的员工大于2000的人数有两个或两个以上就查询出来)
select 部门编号,count(*) from 员工信息表
where 工资>=2000
group by 部门编号
having count(*)>1
where 针对每一条记录筛选
而 having 对同一个部门的分组
count(*)>1 计算多于两个的部门
查询结果为
1 3
3 2
以上是关于SQL语言的=ALL怎么用,WHERE子句中的。 是指集合包含的关系么?如果是谁包含谁的主要内容,如果未能解决你的问题,请参考以下文章