zoukankan      html  css  js  c++  java
  • sql join详解

    inner join(等值连接)

    默认join方式,如果不加修饰词
    只返回两个表中联结字段相等的行

    left join(左连接)

    返回包括左表中的所有记录和右表中联结字段相等

    right join(右连接)

    与左连接相反

    full join(全连接)

    返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。
    即左连接、右连接结果的合并

    非等连接

    使用等值以外的条件来匹配左、右两个表中的行

    select A.c1,B.c2 from A join B on A.c3 != B.c3;
    

    举例说明

    表Article和表ArticleComment分别表示“文章”和“文章评论”,ArticleComment有Article外键ArticleId。表设计为:


    表Article数据如下:

    表ArticleComment数据如下:

    需要注意的是,严格来说,任意的ArticleComment都应该有外键ArticleId,这里为了说明join,没有严格要求,ArticleId可以为空。

    inner join(等值连接)

    select Article.Id,Article.Name,ArticleComment.Id as 'ArticleCommentId',ArticleComment.[Content],ArticleComment.ArticleId 
    from Article
    join ArticleComment on Article.Id=ArticleComment.ArticleId
    

    结果:

    left join(左连接)

    select Article.Id,Article.Name,ArticleComment.Id as 'ArticleCommentId',ArticleComment.[Content],ArticleComment.ArticleId 
    from Article
    left join ArticleComment on Article.Id=ArticleComment.ArticleId
    

    结果:

    right join(右连接)

    select Article.Id,Article.Name,ArticleComment.Id as 'ArticleCommentId',ArticleComment.[Content],ArticleComment.ArticleId 
    from Article
    right join ArticleComment on Article.Id=ArticleComment.ArticleId
    

    结果:

    full join(全连接)

    select Article.Id,Article.Name,ArticleComment.Id as 'ArticleCommentId',ArticleComment.[Content],ArticleComment.ArticleId 
    from Article
    full join ArticleComment on Article.Id=ArticleComment.ArticleId
    

    结果:

    非等连接

    select Article.Id,Article.Name,ArticleComment.Id as 'ArticleCommentId',ArticleComment.[Content],ArticleComment.ArticleId 
    from Article
    join ArticleComment on Article.Id!=ArticleComment.ArticleId
    

    结果:

    技巧

    Left right join 多表的连接顺序
    多表左/右连接,表的连接顺序也可以影响查询速度
    左连接时,应该把小表放在前面连接
    例子:
    A、B、C三表左连接
    情况1:
    A先和B连接,得到100条记录
    100条记录再和C左连接
    情况2:
    A先和C连接,得到50条记录
    50条记录再和B左连接

    右连接时,把小表放在后面连接

  • 相关阅读:
    慕课网多物体运动源代码
    慕课网javascript动画特效 多透明度 源代码
    百度地图实时侦听鼠标滚轮获取地图zoom缩放级别
    百度地图自定义地图切片问题
    百度地图之多点步行路径连线问题
    百度地图利用数组实现多个标注点的显示
    理解clear: left/clear: right
    CSS3 Transform属性详解
    setInterval() 方法
    for Share
  • 原文地址:https://www.cnblogs.com/Lulus/p/12458358.html
Copyright © 2011-2022 走看看