zoukankan      html  css  js  c++  java
  • sql中join与left-join图解区别

     
      select a.*  from YG_BRSYK a 
      left join(SELECT DISTINCT SYXH,
                            STUFF((SELECT '、'+MS FROM #lsb where SYXH=t.SYXH FOR XML PATH('')),1,1,'') AS MS
                            FROM #lsb as t) c on a.SYXH=c.SYXH WHERE c.MS IS NOT NULL order by RYBQ 
    --注:left join...on 为左关联,保留左边所有的数据,右表没有的数据为NULL值。加where条件控制表的输出C.MS不为NULL。因此查询的个数与c表一致760个
      select a.*  from YG_BRSYK a --801331个
    
    SELECT DISTINCT SYXH,
                            STUFF((SELECT '、'+MS FROM #lsb where SYXH=t.SYXH FOR XML PATH('')),1,1,'') AS MS
                            FROM #lsb as t 670个

    https://www.cnblogs.com/lcs-java/articles/8465605.html

    t1表内容如下:

    t2表内容如下:

    下面来简述join和left join/right join的区别:

    inner join

    select * from t1 inner join t2 on t1.id = t2.id;

    公共部分的数据才会被查询出来;

    left join

    select * from t1 left join t2 on t1.id = t2.id;

    查询出来的结果和前表记录数一样多;

    right join

    select * from t1 right join t2 on t1.id = t2.id;

    能转化为

  • 相关阅读:
    JavaScript
    css-装饰
    html 标签
    remote connect openshift mysql
    MySQL
    how to run a continuous background task on OpenShift
    openshifit 安装 redis
    Python之路,Day6
    选择排序
    C语言实现链表
  • 原文地址:https://www.cnblogs.com/xyao1/p/9370279.html
Copyright © 2011-2022 走看看