有一个Oracle中的SQL查询语句的问题
现在有一个SQL语句,有点不理解,请高手指点,先谢谢了。表A:CDAge1000701001801002901003100表B:CDID1000111001221002N...
现在有一个SQL语句,有点不理解,请高手指点,先谢谢了。
表A:
CD Age
1000 70
1001 80
1002 90
1003 100
表B:
CD ID
1000 11
1001 22
1002 NULL
查询语句是:
select A.CD,B.ID
from A,B
where A.CD = B.CD(+) AND
B.ID(+) = 11
查询结果是:
1000 11
1001 NULL
1002 NULL
1003 NULL
这个查询我本以为是错的,因为对B.ID(+)=11我不太理解,请高手给我解释一下这个查询语句是如何执行的。
我对SQL文还是知道的,也知道where后的第一个条件是外连接,但对AND后面的那个B.ID(+) = 11条件很不理解,还请高手解释。。。。。
先谢谢 柏祖连 的回答,但我真的没看懂,是我比较愚钝了,希望能再解释清楚点,谢谢!
另外,δCat的答案我也看了下,如果按照你的说法,最好的运行结果只有一行了:1000 11
所以还是不对。。。。。。
请会的高手再解答下 展开
表A:
CD Age
1000 70
1001 80
1002 90
1003 100
表B:
CD ID
1000 11
1001 22
1002 NULL
查询语句是:
select A.CD,B.ID
from A,B
where A.CD = B.CD(+) AND
B.ID(+) = 11
查询结果是:
1000 11
1001 NULL
1002 NULL
1003 NULL
这个查询我本以为是错的,因为对B.ID(+)=11我不太理解,请高手给我解释一下这个查询语句是如何执行的。
我对SQL文还是知道的,也知道where后的第一个条件是外连接,但对AND后面的那个B.ID(+) = 11条件很不理解,还请高手解释。。。。。
先谢谢 柏祖连 的回答,但我真的没看懂,是我比较愚钝了,希望能再解释清楚点,谢谢!
另外,δCat的答案我也看了下,如果按照你的说法,最好的运行结果只有一行了:1000 11
所以还是不对。。。。。。
请会的高手再解答下 展开
展开全部
双表查询:
简单说了
仔细的说如下(也是简单,还是你学学吧)
select A.CD,B.ID from A,B
用select 先选择a表的cd字段 b表的ID做为,两个表的查询依据,查出两个表中所有CD,ID 两个字段的内容
那个from后面的a,b指的要查的表。后面一句where a.cd=b.cd(+)ad...是条件,也就是说符合a表.cd标准的b表中的id字值和cd字同时为11的列表值。
在意如此。
总的来说,是查一个固定ID排序值,其中B.ID(+)=11不是结果,B.CD(+) AND
B.ID(+) = 11
加起来满足a.cd才是结果。而这里的b.id(+)=11是指定查询,(这里是独立理解,因为你这句中还有一个条件为B.CD(+) 其它他和B.ID(+) 意思一样如果这样写
A.CD = B.ID(+)ANDB.CD(+)
= 11是一样的,之后一个等号后面的是限制范围。(语文没学好,不会表达,不好意思,如果看到我这句之后感觉更迷湖了,就拿刀砍我吧)
简单说了
仔细的说如下(也是简单,还是你学学吧)
select A.CD,B.ID from A,B
用select 先选择a表的cd字段 b表的ID做为,两个表的查询依据,查出两个表中所有CD,ID 两个字段的内容
那个from后面的a,b指的要查的表。后面一句where a.cd=b.cd(+)ad...是条件,也就是说符合a表.cd标准的b表中的id字值和cd字同时为11的列表值。
在意如此。
总的来说,是查一个固定ID排序值,其中B.ID(+)=11不是结果,B.CD(+) AND
B.ID(+) = 11
加起来满足a.cd才是结果。而这里的b.id(+)=11是指定查询,(这里是独立理解,因为你这句中还有一个条件为B.CD(+) 其它他和B.ID(+) 意思一样如果这样写
A.CD = B.ID(+)ANDB.CD(+)
= 11是一样的,之后一个等号后面的是限制范围。(语文没学好,不会表达,不好意思,如果看到我这句之后感觉更迷湖了,就拿刀砍我吧)
ZESTRON
2024-09-04 广告
2024-09-04 广告
表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面污染有助于实施...
点击进入详情页
本回答由ZESTRON提供
展开全部
在 ORACLE 中, + 表示 半连接,+在=左边,表示左连接,+在=右边表示右连接。
A.CD = B.CD(+) AND B.ID(+) = 11
上面这个意思是 :
(A.CD = B.CD or B.CD IS NULL) AND (B.ID = 11 or B.ID IS NULL)
A.CD = B.CD(+) AND B.ID(+) = 11
上面这个意思是 :
(A.CD = B.CD or B.CD IS NULL) AND (B.ID = 11 or B.ID IS NULL)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不太明白,请教高人了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询