当前位置:首页 » 编程语言 » sql中notexists

sql中notexists

发布时间: 2022-12-24 15:05:50

1. 关于sql语句 (not exists)

not exits{ 是信息系 not exits(参加项目) }
为什么是 信息系参加项目的
-- 不存在(是信息系 不存在(参加项目))
选出 不是信息系里且不参加项目的人
选出 除过信息系里参加项目的人和其他系的什么什么

2. SQL语句 比较麻烦的not exists 增加条件

SELECT * FROM table1
WHERE table1.xd <> 'XC' and table1.xd <> 'RK'
and not exists (SELECT ph from table2
WHERE djlx = 'WGD' and table1.ph=table2.ph ) 试试

3. sql 中的not exists是什么意思 谁能具体说一下

我的字面理解 就是“不存在” 一般多判断表或者数据库的存在
http://soft.zdnet.com.cn/software_zone/2009/1221/1568274.shtml

4. sql中not exists用法

恩,对的,其实写法很多

1、
select id from a where id not in (select id_no from b)

2、
select id from a
except
select id_no from b

5. sql server中not in,in与not exists,exists有什么不同

我给你举几个例子你感受一下。

(1)select*fromstudentwhereclassnotin('1','2','3')

查询班级不在1,2,3的学生信息

(2))select*fromstudentwhereclassin('1','2','3')

查询班级在1,2,3的学生信息

in和notin的用法,更多会出现在子查询中,

例如select*fromstudentwheresnoin(selectsnofromExamwherecourse='English')查询参加了英语考试的学生信息。

(3)exists更多时候出现在if判断中,它只做一个是或否的判断,例如如果存在birthday=今天的学生,那么就把他的age+1

ifexists(=getdate())
BEGIN
updatestudentsetage=age+1wherebirthday=getdate()
END
else
selectN'今天没有同学过生日'

6. 怎么用用sql语句中的not exists来写语句

USE pubs
GO
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
GO

-- Or, using the IN clause:

USE pubs
GO
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
GO

下面是任一查询的结果集:

pub_name
----------------------------------------
Algodata Infosystems
New Moon Books

7. Sql中not exists, 如何用linq表示

你要说完全一样,那是不太可能的。
第一,你的语句本身就有优化空间。
你的和如下的sql 等效:
select * from table1 as t1
where not Exists(select null from table2 where t1.id=t2.id)
如上可减少内存空间交换输出。
------------------------------------------------------------------
linq:如下是检索没有明细的订单,跟你的要求一样. 你改成t1 t2 就行了

from x in Orders
where !Order_Details.Any(t => t.Detail_Order_ID != x.Order_NO)
select x

如上转化成的sql是:
SELECT [t0].[order_ID] AS [Order_ID], [t0].[order_NO] AS [Order_NO]
FROM [Order] AS [t0]
WHERE NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Order_Detail] AS [t1]
WHERE [t1].[detail_Order_ID] <> [t0].[order_NO]
))
----------
如上的写法应该够水准。回头给我多加红包哦!

8. sql中 not exists的问题

那你这个查询结果应该是为空。
not exists 的用法是 没有返回结果 为真。
EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。
你A系有没有被学生选择的课程。也就是说not exists是有返回值的。有返回值那表示1=0 所以为空

9. SQL语句中exists和not exists的用法,讲得通俗易懂些。

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 与 in 最大的区别在于 in引导的子句只能返回一个字段,比如:
select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)
,in子句返回了三个字段,这是不正确的,exists子句是允许的,但in只允许有一个字段返回,在1,2,3中随便去了两个字段即可。

而not exists 和not in 分别是exists 和 in 的 对立面。
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
下面详细描述not exists的过程:
如下:
表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 EXISTS (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据

NOT EXISTS 就是反过来
SELECT ID,NAME FROM A WHERENOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
3 A3
===========================================================================
EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因
SELECT ID,NAME FROM A WHEREID IN (SELECT AID FROM B)

NOT EXISTS = NOT IN ,意思相同不过语法上有点点区别
SELECT ID,NAME FROM A WHEREIDNOT 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 EXISTS
(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))

10. 关于SQL语句中exists与not exists的问题

EXISTS或者NOT EXISTS是把主查询的字段传到后边的查询中作为条件,返回值是TRUE或者FALSE。EXISTS TRUE,那么就是查询条件成立,结果会显示出来。NOT EXISTS TRUE,则为FALSE,查询连接条件不成立。
select * from course where not exists(select * from grade where grade.课程代号=course.课程代号)
这个语句,是查询course表中课程代号在grade中没有出现的数据。
看看grade表,课程编号有K01到K06,而COURSE表,有K01到K07,那么K07在GRADE表是不存在的,那么,是符合条件的。
同样select * from course where exists(select * from grade where grade.课程代号=course.课程代号)
则是查询COURSE的记录条件为编号在GRADE中存在。那么很明显,结果是K01到K06的数据。
另外,EXISTS和NOT EXISTS的作用可以用IN或NOT IN实现,但是,效率要高。
因为EXISTS和NOT EXISTS返回的结果是TRUE或者FALSE,那么则在子查询中,遇到第一个符合条件的结果,就会退出查询,而不会进行全表的检索。而NOT IN或者IN,要把子查询中的SELECT字句全部查询出来才行。

热点内容
android微信推送消息推送消息 发布:2025-07-04 22:56:52 浏览:383
android分享文件 发布:2025-07-04 22:56:40 浏览:401
c语言方程的根 发布:2025-07-04 22:55:33 浏览:447
什么电脑单机游戏好玩又免费配置低 发布:2025-07-04 22:51:27 浏览:419
真香配置有哪些 发布:2025-07-04 22:49:05 浏览:207
安卓在哪里找游戏 发布:2025-07-04 22:15:25 浏览:243
路由器访问光猫 发布:2025-07-04 22:07:47 浏览:898
数据库显示语句 发布:2025-07-04 22:04:30 浏览:741
编程课道具 发布:2025-07-04 22:04:02 浏览:845
华为手机不是安卓什么时候可以更新米加小镇 发布:2025-07-04 22:01:37 浏览:786