• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL 外链接操作小结 inner join   left join   right join
    数据库操作语句 
    7. 外连接——交叉查询
    7.1 查询 
    7.2 等值连接
    7.3 右外连接
    7.4 左外连接
    7.5 更新操作

    简介:

    外部连接和自联接
    inner join(等值连接) 只返回两个表中联结字段相等的行
    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
    right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
    on 指定表间联结字段及其关系的等号 "=" 表达式, 返回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录. 
    ! 外部连接只能操作已存在于数据库中的数据

    7.5.2

     程序代码
    Update (ctarticle AS a LEFT JOIN ctclass AS c ON a.classid = c.classid) LEFT JOIN cttag AS b ON a.articleid = b.articleid 
    SET tag=tag+' ', b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid 
    Where a.classid=23 AND a.nclassid=0 AND tagid is not null


    7.5.1 

     程序代码
    Update (ctarticle AS a LEFT JOIN (ctnclass AS c LEFT JOIN ctclass AS d ON c.classid = d.classid) ON a.nclassid = c.nclassid AND a.classid = c.classid) LEFT JOIN cttag AS b ON a.articleid = b.articleid SET tag=d.class+' '+c.nclass, b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid Where a.classid=23 AND a.nclassid=197;


    7.5 更新操作

    74.5 左连接中数据的筛选

     程序代码
    Insert INTO cttag(articleid,classid,nclassid) Select a.articleid,a.classid,a.nclassid from ctarticle a left join cttag b on a.articleid=b.articleid where b.articleid is null

    //本语句功能为, 显示主表的全部内容, 插入数据到副表中没有的数据
    //主要作用为: 让数据减少冗余

    7.4.4.1 上例中的延续

     程序代码
    Select a.*, b.*, c.*, d.*
    FROM cttag as d left join ((ctarticle AS a LEFT JOIN ctclass AS b ON a.classid=b.classid) LEFT JOIN ctnclass AS c ON a.nclassid=c.nclassid) on d.articleid=a.articleid;


    7.4.4 显示文章表中的全部, 调用类别表中的栏目

     程序代码
    select a.*, b.*, c.* from (ctarticle a left join ctclass b on a.classid=b.classid) left join ctnclass c on a.nclassid=c.nclassid

    //作用, 有时在文章表中包含了在个别类别表中没有的数据, 用这个语法可以读出文章表的全部数据
    //a 为 文章表, b 为主类别, c 为子类别

    7.4.3 同上例, 选择追加数据时加上空格

     程序代码
    Insert INTO cttag(articleid,classid,nclassid,tag)
    Select a.articleid,a.classid,a.nclassid,d.class+' '+c.nclass
    FROM (ctarticle AS a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) LEFT JOIN cttag AS b ON a.articleid = b.articleid where a.classid=4 and a.nclassid=154;


    7.4.2 连接N个表, 并追加数据到其中一个表, N=4

     程序代码
    Insert INTO cttag(articleid,classid,nclassid,tag)
    Select a.articleid,a.classid,a.nclassid,d.class+c.nclass
    FROM (ctarticle AS a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) LEFT JOIN cttag AS b ON a.articleid = b.articleid where a.classid=1 and a.nclassid=1;

    //解读
    插入到 表2(栏1,栏2,栏3,栏4)
    选择 别名a.栏1, 别名a.栏2, 别名a.栏3, 别名d.栏4 加上 别名c.栏5
    从 (表1 别名a 左连接 (表3 别名c 左连接 表4 别名d 在 别名c.栏2 等于 别名d.栏2) 在 别名a.栏2 等于 别名c.栏2 和 别名a.栏3=别名c.栏3) 左连接 表2 别名b 在 别名a.栏1 等于 别名b.栏1 在那里 别名a.栏2=1 和 别名a.栏3=1

    7.4.1 连接两个表, 并追加数据到其中一个表

     程序代码
    Insert INTO cttag(articleid,classid,nclassid)
    Select a.articleid,a.classid,a.nclassid
    FROM ctarticle AS a LEFT JOIN cttag AS b ON a.articleid = b.articleid where a.classid=1 and a.nclassid=1;

    //解读
    插入到 表2(栏1,栏2,栏3)
    选择 别名a.栏1, 别名a.栏2, 别名a.栏3
    从 表1 别名a 左连接 表2 别名b 在 别名a.栏1 等于 别名b.栏1 在那里 别名a.栏4=1 和 别名a.栏5=1

    7.4. 左连接

    7.3.1 同步两表的数据

     程序代码
    Update ctarticle a INNER JOIN cttag b ON a.articleid = b.articleid SET b.classid=a.classid, b.nclassid=a.nclassid;

    //解读
    更新 表1 别名a 联接 表2 别名2 在 别名a.栏1 等于 别名b.栏1 设置 别名b.栏2 更新为 别名a.栏2, 别名b.栏3 更新为 别名a.栏3 

    7.3 右外连接

     程序代码
    select a.*, b.* from bunclass a right join ctclass b on a.classid=b.classid where a.nclassid=20

    查询别名 a,b 表, 只匹配 b 表中的内容.

    7.2.3 添加数据到连接表之一

     程序代码
    Insert INTO cttag ( tag, articleid ) Select top 1 b.tag, a.articleid FROM ctarticle AS a left JOIN cttag AS b ON a.articleid = b.articleid Where a.articleid order by a.articleid desc;


    7.2.2 变通中的用法二

     程序代码
    Insert INTO bureply 
    Select b.*, a.classid, a.nclassid
    FROM article AS a INNER JOIN reply AS b ON a.articleid = b.articleid
    Where classid=50;


    7.2.1 实际应用中的变通

     程序代码
    Insert INTO butag ( tag, articleid, classid, nclassid)
    Select b.tag, a.articleid, a.classid, a.nclassid
    FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid
    Where classid=24;


    7.2 添加数据到其他表

     程序代码
    Insert INTO butag ( tag, articleid )
    Select b.tag, a.articleid
    FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid
    Where a.articleid>False;

    //解读
    添加到 接收表(列1,列2)
    选择 别名b.列1, 别名a.列2
    从 表1 表名a 联接 表2 表名b 在 别名a.列c 等于 别名b.列c
    在哪里 别名a.列c 不等于 没有

    7.1.1 实际应用中的变通

     程序代码
    Select b.tag, a.articleid, a.classid, a.nclassid
    FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid
    Where a.classid=24;


    7.1 查询

     程序代码
    Select b.tag, a.articleid
    FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid
    Where a.articleid>False;

    //解读
    选择 别名b.列, 别名a.列
    从 表1 别名a 联接 表2 别名b 在 别名a.列c = 别名b.列c
    在哪里 别名a.列c 不等于 没有
    注: as 不是必要

    7. 外连接——交叉查询
    提示: 注意表中相同的栏目 
    您可能感兴趣的文章:
    • 超详细mysql left join,right join,inner join用法分析
    • 数据库Left join , Right Join, Inner Join 的相关内容,非常实用
    • 解析sql语句中left_join、inner_join中的on与where的区别
    • SQL之left join、right join、inner join的区别浅析
    • inner join 内联与left join 左联的实例代码
    • inner join和left join之间的区别详解
    上一篇:MSSQL内外连接(INNER JOIN)语句详解
    下一篇:SQL Server中网络备份一例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL 外链接操作小结 inner join   left join   right join SQL,外,链接,操作,小结,inner,