外部连接和自联接 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
程序代码 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;
程序代码 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;
程序代码 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;
巨人网络通讯声明:本文标题《SQL 外链接操作小结 inner join left join right join》,本文关键词 ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。