数据库中exists的用法
数据库中ests的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中ests的用法的用法,希望对你们有用。
数据库中ests的用法的用法如下:
ests : 强调的是是否返回结果集,不要求知道返回什么, 比如:
select name from student where sex = 'm' and mark ests(select 1 from grade where ...) ,只要
ests引导的子句有结果集返回,那么ests这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以ests子句不在乎返回什么,而是在乎是不是有结果集返回。
而 ests 与 in 最大的区别在于 in引导的子句只能返回一个字段,比如:
select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)
,in子句返回了三个字段,这是不正确的,ests子句是允许的,但in只允许有一个字段返回,在1,2,3中随便去了两个字段即可。
而not ests 和not in 分别是ests 和 in 的 对立面。
ests (sql 返回结果集为真)
not ests (sql 不返回结果集为真)
下面详细描述not ests的过程:
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3
表A和表B是1对多的关系 A.ID => B.AID
SELECT ID,NAME FROM A WHERE ESTS (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID,NAME FROM A WHERE ESTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
SELECT ID,NAME FROM A WHERE ESTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据
SELECT ID,NAME FROM A WHERE ESTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据
NOT ESTS 就是反过来
SELECT ID,NAME FROM A WHERE NOT EST (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
3 A3
===========================================================================
ESTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因
SELECT ID,NAME FROM A WHERE ID IN (SELECT AID FROM B)
NOT ESTS = NOT IN ,意思相同不过语法上有点点区别
SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)
有时候我们会遇到要选出某一列不重复,某一列作为选择条件,其他列正常输出的情况.
如下面的表table:
Id Name Class Count Date
1 苹果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果想要得到下面的结果:(Id唯一,Date选最近的一次)
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
正确的SQL语句是:
SELECT Id, Name, Class, Count, Date
FROM table t
WHERE (NOT ESTS
(SELECT Id, Name, Class, Count, Date FROM table
WHERE Id = t.Id AND Date > t.Date))
如果用distinct,得不到这个结果, 因为distinct是作用与所有列的
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
结果是表table的所有不同列都显示出来,如下所示:
1 苹果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果用Group by也得不到需要的结果,因为Group by 要和聚合函数共同使用,所以对于Name,Class和Count列要么使用Group by,要么使用聚合函数. 如果写成
SELECT Id, Name, Class, Count, MAX(Date)
FROM table
GROUP BY Id, Name, Class, Count
得到的结果是
1 苹果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果写成
SELECT Id, MAX(Name), MAX(Class), MAX(Count), MAX(Date)
FROM table
GROUP BY Id
得到的结果是:
1 香蕉 水果 20 2011-7-3
2 青菜 蔬菜 19 2011-7-2
如果用in有时候也得不到结果,(有的时候可以得到,如果Date都不相同(没有重复数据),或者是下面得到的Max(Date)只有一个值)
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
WHERE (Date IN
(SELECT MAX(Date)
FROM table
GROUP BY Id))
得到的结果是:(因为MAX(Date)有两个值2011-7-2,2011-7-3)
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
注意in只允许有一个字段返回
有一种方法可以实现:
SELECT Id, Name, Class, COUNT, Date
FROM table1 t
WHERE (Date =
(SELECT MAX(Date)
FROM table1
WHERE Id = t .Id))
本文地址:http://www.55jiaoyu.com/show-767245.html
本文由合作方发布,不代表展全思梦立场,转载联系作者并注明出处:展全思梦
推荐文档
- 11.蒂罗尔,蒂罗尔面包
- 12.2012三本分数线预测—2012三本分数线预测是多少
- 13.单冲峰-单冲峰地心
- 14.正大画室,正达画室怎么样
- 15.密苏里科技大学(密苏里科技大学qs)
- 16.供热通风与空调工程、供热通风与空调工程技术干什么的
- 17.石油化工生产技术-石油化工生产技术专业代码
- 18.新加坡签证多少钱、新加坡要签证吗
- 19.数学与应用数学;数学与应用数学师范和非师范区别
- 20.1200欧元(世界上最贵的钱币)
- 21.十二月,英文-十二个月英文
- 22.校长讲话-校长讲话主持人串词
- 23.环境描写的作用,环境描写的作用有哪些
- 24.燕山大学录取分数线预测;燕山大学录取分数线预测2023河北
- 25.北京信息科技大学排名_北京信息科技大学排名全国排名
- 26.武汉市卫生学校;武汉市卫生学校地址
- 27.迪拜房价(迪拜房价多少)
- 28.陕西铁路职业技术学院(陕西铁路职业技术学院2023招生)
- 29.看图测智力_看图测智商情商
- 30.江西省人均gdp、江西省人均gdp多少
- 31.西北师范大学招生网-西北师范大学招生网录取查询
- 32.潜行的意思、潜行的意思是什么
- 33.广东公安高等专科学校(广东公安高等专科学校,校长)
- 34.沈阳大专(沈阳大专单招学校)
- 35.ctb竞赛、ctb竞赛桃子作弊
- 36.兰州财经大学是一本还是二本-兰州理工大学是一本还是二本
- 37.talent、talented的名词
- 38.湖南工艺美术学院(湖南工艺美术学院是公办还是民办)
- 39.国际法学专业排名_国际法专业大学排名
- 40.uis是什么意思-Mihapuis是什么意思
- 41.江苏单招网、江苏单招网是个什么样的机构
- 42.志愿填报指南;志愿填报指南电子版
- 43.安徽警官职业学院(安徽警官职业学院国控专业)
- 44.琦玉县(琦玉县在东京都内吗)
- 45.石龙中学、石龙中学宿舍图片
- 46.在校大学生参军(在校大学生参军在学校报名还是户籍地?)
- 47.河南科技学院是几本;河南科技学院往年录取分数线预测
- 48.廉颇简介_廉颇简介资料
- 49.化学沉淀表口诀、化学沉淀表口诀高中
- 50.淮海工学院—淮海工学院和淮阴工学院
- 51.哈尔滨工业大学专业-哈尔滨工业大学专业排名一览表***
- 52.焊接技术及自动化(焊接技术及自动化专业)
- 53.阜阳有哪些大学(安徽阜阳有哪些大学)
- 54.烹饪专业;烹饪专业好就业吗
- 55.does的用法,do和does的用法
- 56.重庆长生桥中学—重庆长生桥中学招生电话
- 57.药学专业排名;药学专业排名前十的大学
- 58.广东寸金学院(广东寸金学院学费)
- 59.沈阳建筑大学怎么样-沈阳建筑大学国际本科互认
- 60.常州刘国钧_常州刘国钧职业技术学院
- 51.武汉体育学院有硕士点吗 可以考研吗
- 52.广州医科大学有硕士点吗 可以考研吗
- 53.金陵科技学院有硕士点吗 可以考研吗
- 54.湖北师范大学有硕士点吗 可以考研吗
- 55.浙江科技大学有硕士点吗 可以考研吗
- 56.星海音乐学院有硕士点吗 可以考研吗
- 57.中央美术学院有硕士点吗 可以考研吗
- 58.东北财经大学有硕士点吗 可以考研吗
- 59.内蒙古科技大学有硕士点吗 可以考研吗
- 60.西安石油大学有硕士点吗 可以考研吗
- 61.郓城电商学校轨道运营与管理招生简章
- 62.不推荐报考的几大专业,专业课水,找工作也难!
- 63.小学生推荐课外阅读必读书目最新
- 64.进学生会面试自我介绍范文5篇往年
- 65.永新职业中等专业学校学费多少钱一年【供你参考】
- 66.中国民间故事大全精选
- 67.四川去年计算机学校大专有哪些【供你参考】
- 68.预防蟑螂最有效的方法
- 69.龙口高级职业学校招生简章
- 70.陕西省商贸学校去年招生计划【供你参考】

