欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于sql语言的一个疑义

更新时间: 2014-01-05 02:15:41 责任编辑: Author_N1

 

关于sql语言的一个疑问
SQL语言中有个问题一直想不明白。
有这么一个问题,假如我有两张表table1与table2,现在我要返回table1.A = table2.B的行,那么我可以这么写:
select *
from table1
where table1.A=table2.B;
那么这么做是不报错的,我想实现的时候应该是这个样子的:把table1中的每一个A中的值依次和table2中的每一个B中的值比较,如果相同则返回。那么时间复杂度应该是N exp 2
如果我的设想是正确的话,那么看下面这个问题:
找出table1中C属性值在table2中>100的行,如果我用子查询这么写:
select *
from table1
where C = (select C
           from table2
           where C>100
           )
这个时候会报错,说子查询返回的值不止一个。
但是我们不可以这样去实现吗:将C中的每一个值和子查询结果集中的每一个值作比较,如果相等则返回改行,这么实现也没什么问题啊,但为什么会报错呢?为什么必须用in和exist呢?我觉得前者更直观一些
--参考方法--
原理是像你所说的一样,但这是语法规定啊,不这样做编译器就认为有错。
当然,如果你自己写一个编译器的话,就可以执行你的语句了。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:15:41
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7668/
本文WWW.DOC100.NET DOC100.NET版权所有。