sql相关
时间:2011-11-23
来源:互联网
(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN)
解释红体部分
作者: zxl513029 发布时间: 2011-11-23
作者: zxl513029 发布时间: 2011-11-23
SELECT * FROM PROJECT P WHERE P.PNUMBER NOT in (SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN)
作者: roy_88 发布时间: 2011-11-23
作者: roy_88 发布时间: 2011-11-23
是MSSQL?
作者: geniuswjt 发布时间: 2011-11-23
作者: roy_88 发布时间: 2011-11-23
作者: ssp2009 发布时间: 2011-11-23
LZ,你确定这执行的通吗?
是MSSQL?
可用這樣用,是SQL7.0之前的版本用的
作者: roy_88 发布时间: 2011-11-23
引用 4 楼 geniuswjt 的回复:
LZ,你确定这执行的通吗?
是MSSQL?
可用這樣用,是SQL7.0之前的版本用的
作者: geniuswjt 发布时间: 2011-11-23
WHERE NOT EXISTS
(SELECT * FROM PROJECT P WHERE P.PNUMBER<>ALL
(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN))
这是整个语句
SQL2008能够执行的
就是不太明白
作者: zxl513029 发布时间: 2011-11-23
ALL--應該用any吧,不等於任何一個值
select FNAME,LNAME from EMPLOYEE E
WHERE NOT EXISTS
(SELECT * FROM PROJECT P WHERE P.PNUMBER<>ALL
(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN))
这是整个语句
是对的,能够执行的,但是那句不懂
作者: zxl513029 发布时间: 2011-11-23
<> all等价与 not in
是那么等价的 但
select FNAME,LNAME from EMPLOYEE E
WHERE NOT EXISTS
(SELECT * FROM PROJECT P WHERE P.PNUMBER<>ALL
(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN))
这是整个语句,那句怎么理解
作者: zxl513029 发布时间: 2011-11-23
WHERE NOT EXISTS
(SELECT * FROM PROJECT P WHERE P.PNUMBER
not in(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN))
这个嵌套了两层子查询,最外层EMPLOYEE限制最里层WORK_ON,又合起来限制第二层PROJECT ,你细想
作者: ssp2009 发布时间: 2011-11-23
引用 3 楼 roy_88 的回复:
ALL--應該用any吧,不等於任何一個值
select FNAME,LNAME from EMPLOYEE E
WHERE NOT EXISTS
(SELECT * FROM PROJECT P WHERE P.PNUMBER<>ALL
(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN))
……
在2樓不是解釋了麼,not in
作者: roy_88 发布时间: 2011-11-23
select FNAME,LNAME from EMPLOYEE E WHERE NOT EXISTS (SELECT * FROM PROJECT P WHERE NOT exists(SELECT 1 FROM WORK_ON W WHERE W.ESSN=E.SSN AND P.PNUMBER=W.PNO ) ) --也可以這樣改 同一個員有在WORK_ON的PNO字段 包含了所有的PROJECT表的PNUMBER字段,有個沒有包括都出結果集
作者: roy_88 发布时间: 2011-11-23
select FNAME,LNAME from EMPLOYEE E
WHERE NOT EXISTS
(SELECT * FROM PROJECT P WHERE P.PNUMBER
not in(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN))
这个嵌套了两层子查询,最外层EMPLOYEE限制最里层WORK_O……
那个not in前面是有很多个 后面也是一个表,它的意思是前面的同时不能在后面找到?还是其他
作者: zxl513029 发布时间: 2011-11-23
WHERE NOT EXISTS
(SELECT * FROM PROJECT P WHERE P.PNUMBER
not in(SELECT W.PNO FROM WORK_ON W WHERE W.ESSN=E.SSN))
这个嵌套了两层子查询,最外层EMPLOYEE限制最里层WORK_ON,又合起来限制第二层PROJECT ,你细想
作者: vincent_font 发布时间: 2011-11-23
作者: roy_88 发布时间: 2011-11-23
作者: vincent_font 发布时间: 2011-11-23
SQL code
EMPLOYEE ESSN 001 002 PROJECT: PNUMBER 1 2 3 WORK_ON ESSN PNO 001 1 001 2 001 3 001 1 001 2 --如上數據員工002出現在結果集,因為在WORK_ON的PNO少了3
作者: roy_88 发布时间: 2011-11-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28