SQL中EXISTS怎么用

SQL中EXISTS怎么用,第1张

EXISTS在SQL中的作用是:检验查询是否返回数据

select a.* from tb a where exists(select 1 from tb where name =a.name)返回真假,当 where 后面的条件成立,则列出数据,否则为空。

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 方法描述如果在 Dictionary对象中指定的关键字存在,返回True,若不存在,返回False。

语法object.Exists(key)Exists 方法语法有如下几部分:部分描述Object必需的。始终是一个 Dictionary对象的名字。Key必需的,在 Dictionary对象中搜索的Key值。

exist相当于存在量词:表示集合存在,也就是集合不为空只作用一个集合.

例如 exist P表示P不空时为真not exist P表示p为空时为真in表示一个标量和一元关系的关系。

例如:s in P表示当s与P中的某个值相等时为真s not in P 表示s与P中的每一个值都不相等时为真。

exits与not exits

exists(sql 返回结果集为真)

not exists(sql 不返回结果集为真)

如果not exists子查询只有自己本身的查询条件,这样只要子查询中有数据返回,就证明是false,结果在整体执行就无返回值;一旦跟外面的查询关联上,就能准确查出数据。

参考资料:百度百科-Exists

having sum(quantity*price)>all (

select sum(quantity*price)

from OrderDetail

group by orderNo

)

放在group by orderNo后面

从你的数据上来分析,ParentID 为0的应该就是一级名称,ParentID不为0的就是二级名称

最终结果如下

SELECT ClassName

FROM [Class]

WHERE ParentID = 0

UNION ALL

SELECT [Class2].ClassName+'.'+[Class].ClassName

FROM [Class] INNER JOIN

[Class] AS [Class2] ON [Class].ParentID = [Class2].ClassID

ORDER BY ClassName

如果是取ClassID显示的话,就把ClassName换成ClassID,这是个自表关联的问题,你把它想象成两个表就好理解了

别名为[Class2]的是父级表,数据表实际是还是[Class]


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9727062.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存