问题描述
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语句的区别在那 ? 求高手解释一下
解决方案
一是使用子查询,会创建临时表二和三区别不是特别大三里默认的join是inner join二里where查询时,优化器可能会自动把where查询变成inner join,两者效率区别不大,上面例子的二和三应该是等价的吧
解决方案二:
还有 一 可能会报错的。。。如果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') ;
解决方案三:
第一个是子查询语句,返回的是满足条件c的数据;第三个是内连接查询,内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种;第三个应该是外连接查询 (包括左外连接、右外连接、全外连接)。外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。三者的共同点是都返回符合连接条件和查询条件(即:内连接)的数据行。不同点如下:左外连接还返回左表中不符合连接条件单符合查询条件的数据行。右外连接还返回右表中不符合连接条件单符合查询条件的数据行。全外连接还返回左表中不符合连接条件单符合查询条件的数据行,并且还返回右表中不符合连接条件单符合查询条件的数据行。全外连接实际是上左外连接和右外连接的数学合集(去掉重复),即“全外=左外 UNION 右外”。说明:左表就是在“(LEFT OUTER JOIN)”关键字左边的表。右表当然就是右边的了。在三种类型的外连接中,OUTER 关键字是可省略的。