SQL这两条语句有什么区别?查询结果都一样吗?

select sno from spj,p
where spj.pno=p.pno and p.color='红色' and spj.jno='j1'

SELECT SNO FROM SPJ
WHERE JNO=‘J1’ AND PNO IN (SELECT PNO FROM P WHERE COLOR=‘红’)

查询结果都一样的,没有区别。

不过第一个的运行效率是比较高。数据量少的时候看不出区别,当遇见电信,银行这种上千万的大数据量的数据库的时候,两者的区别就很明显了,查询速度能相差好几分钟。所以写程序的时候都使用第一种。

至于为什么第一个快就涉及到SQL语句执行效率等一系列问题了,是一门学科,需要专门学习,单就这两个语句来讲, 在where条件后面写select语句的执行效率是非常差的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-13
结果不一样。
第一个是双表外联合查询,会有冗余项目甚至空项目出现,具体参考“SQL 联合查询”
第二个是单表复合查询,不会出现超出SPJ表的冗余条目。

第二个语句效率和实现更好。本回答被提问者采纳
第2个回答  2014-10-16
好像只要你那个'红'和'红色'没有问题就应该是一样的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网