发布网友 发布时间:2022-04-27 03:00
共3个回答
热心网友 时间:2022-05-03 18:54
ALL不和=直接使用的, ANY才和=使用的,表示只要满足集合里面的一个条件就可以了
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的
热心网友 时间:2022-05-03 20:12
用in呗
where id in (id1,id2,id3...) -- 括号里面也可以是子查询
热心网友 时间:2022-05-03 21:46
--------------------------------------------------------------------------------
--一个集合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 一般没有什么意义.