sql 语句的区别

select s from t_sc where c=(select c from t_c where cn='jsp')
select s from t_sc,t_c where t_c.c=t_sc.c and cn='jsp'
select s from t_sc join t_c on (t_sc.c=t_c.c) where cn='jsp'

这三种sql语句的区别在那 ?
求高手解释一下

sql

3个回答

一是使用子查询,会创建临时表

二和三区别不是特别大

三里默认的join是inner join

二里where查询时,优化器可能会自动把where查询变成inner join,两者效率区别不大,上面例子的二和三应该是等价的吧

第一个是子查询语句,返回的是满足条件c的数据;
第三个是内连接查询,内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种;
第三个应该是外连接查询 (包括左外连接、右外连接、全外连接)。外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。三者的共同点是都返回符合连接条件和查询条件(即:内连接)的数据行。不同点如下:左外连接还返回左表中不符合连接条件单符合查询条件的数据行。
右外连接还返回右表中不符合连接条件单符合查询条件的数据行。全外连接还返回左表中不符合连接条件单符合查询条件的数据行,并且还返回右表中不符合连接条件单符合查询条件的数据行。全外连接实际是上左外连接和右外连接的数学合集(去掉重复),即“全外=左外 UNION 右外”。说明:左表就是在“(LEFT OUTER JOIN)”关键字左边的表。右表当然就是右边的了。在三种类型的外连接中,OUTER 关键字是可省略的。

flyfx52
flyfx52 谢谢!!!
7 年多之前 回复

还有 一 可能会报错的。。。如果select c from t_c where cn='jsp'的结果不止一条的话。。。。应该用in , select s from t_sc where c in (select c from t_c where cn='jsp') ;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!