用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > mysql教程

mysql中关联查询sql语句

时间:2015-01-23  来源:西部数据  作者:西部数据

关联子查询是指一个包含对表的引用的子查询,该表也显示在外部查询中,通俗一点来讲,就是子查询引用到了主查询的数据数据.

以一个实际的例子来理解关联子查询:

left join:左连接,返回左表中所有的记录以及右表中连接字段相等的记录.

right join:右连接,返回右表中所有的记录以及左表中连接字段相等的记录.

inner join:内连接,又叫等值连接,只返回两个表中连接字段相等的行.

full join:外连接,返回两个表中的行:left join + right join.

cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数.

代码如下:

  1. declare @a table(a int,b int
  2. declare @b table(a int,b int
  3.  
  4. insert @a values(1,1) 
  5. insert @a values(2,2) 
  6. insert @b values(1,1) 
  7. insert @b values(3,3) 
  8. select * from @a  
  9. select * from @b --phpfensi.com 
  10. --左: 
  11. select * from @a Aa left join @b Bb on Aa.a=Bb.a 
  12. --右: 
  13. select * from @a Aa right join @b Bb on Aa.a=Bb.a 
  14. --内 
  15. select * from @a Aa inner join @b Bb on Aa.a=Bb.a 
  16. --外: 
  17. select * from @a Aa full join @b Bb on Aa.a=Bb.a 
  18. --交叉连接 
  19. select * from @a  cross join @b 

关联子查询效率:

很明显,一般情况下关联子查询的效率是比较低下的,实际上本例中的关联子查询例子也仅是为了演示关联子查询的原理及用法,如果可以的话,关联子查询尽量使用 JOIN 或其他查询来代替,如本例中,使用 INNER JOIN 来替换的 SQL 为.SELECT article.* FROM article INNER JOIN user ON article.uid = user.uid

注意:此处只是为了演示用 INNER JOIN 替换关联子查询的样例,并非表名这种处理是最优处理.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门