加入收藏 | 设为首页 | 会员中心 | 我要投稿 平凉站长网 (https://www.0933zz.com.cn/)- 图像处理、语音技术、媒体智能、运维、低代码!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql中关联查询sql语句

发布时间:2022-07-02 11:16:57 所属栏目:MySql教程 来源:互联网
导读:关联子查询是指一个包含对表的引用的子查询,该表也显示在外部查询中,通俗一点来讲,就是子查询引用到了主查询的数据数据. 以一个实际的例子来理解关联子查询: left join:左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right join:右连接,返回右
  关联子查询是指一个包含对表的引用的子查询,该表也显示在外部查询中,通俗一点来讲,就是子查询引用到了主查询的数据数据.
 
  以一个实际的例子来理解关联子查询:
 
  left join:左连接,返回左表中所有的记录以及右表中连接字段相等的记录.
 
  right join:右连接,返回右表中所有的记录以及左表中连接字段相等的记录.
 
  inner join:内连接,又叫等值连接,只返回两个表中连接字段相等的行.
 
  full join:外连接,返回两个表中的行:left join + right join.
 
  cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数.
 
  代码如下:
 
  declare @a table(a int,b int)
  declare @b table(a int,b int)
   
  insert @a values(1,1)
  insert @a values(2,2)
  insert @b values(1,1)
  insert @b values(3,3)
  select * from @a  
  select * from @b --phpfensi.com
  --左:
  select * from @a Aa left join @b Bb on Aa.a=Bb.a
  --右:
  select * from @a Aa right join @b Bb on Aa.a=Bb.a
  --内
  select * from @a Aa inner join @b Bb on Aa.a=Bb.a
  --外:
  select * from @a Aa full join @b Bb on Aa.a=Bb.a
  --交叉连接
  select * from @a  cross join @b
  关联子查询效率:
 
  很明显,一般情况下关联子查询的效率是比较低下的,实际上本例中的关联子查询例子也仅是为了演示关联子查询的原理及用法,如果可以的话,关联子查询尽量使用 JOIN 或其他查询来代替,如本例中,使用 INNER JOIN 来替换的 SQL 为.SELECT article.* FROM article INNER JOIN user ON article.uid = user.uid
 
  注意:此处只是为了演示用 INNER JOIN 替换关联子查询的样例,并非表名这种处理是最优处理.

(编辑:平凉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读