香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > MSSQL >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

SQL 外链接操作小结 inner join   left join&nbs


时间:2020-10-31 14:15 作者:admin610456


数据库操作语句
7.外连接——交叉查询
7.1查询
7.2等值连接
7.3右外连接
7.4左外连接
7.5更新操作

简介:

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

7.5.2

程序代码
Update(ctarticleASaLEFTJOINctclassAScONa.classid=c.classid)LEFTJOINcttagASbONa.articleid=b.articleid
SETtag=tag+'',b.articleid=a.articleid,b.classid=a.classid,b.nclassid=a.nclassid
Wherea.classid=23ANDa.nclassid=0ANDtagidisnotnull


7.5.1

程序代码
Update(ctarticleASaLEFTJOIN(ctnclassAScLEFTJOINctclassASdONc.classid=d.classid)ONa.nclassid=c.nclassidANDa.classid=c.classid)LEFTJOINcttagASbONa.articleid=b.articleidSETtag=d.class+''+c.nclass,b.articleid=a.articleid,b.classid=a.classid,b.nclassid=a.nclassidWherea.classid=23ANDa.nclassid=197;


7.5更新操作

74.5左连接中数据的筛选

程序代码
InsertINTOcttag(articleid,classid,nclassid)Selecta.articleid,a.classid,a.nclassidfromctarticlealeftjoincttagbona.articleid=b.articleidwhereb.articleidisnull

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

7.4.4.1上例中的延续

程序代码
Selecta.*,b.*,c.*,d.*
FROMcttagasdleftjoin((ctarticleASaLEFTJOINctclassASbONa.classid=b.classid)LEFTJOINctnclassAScONa.nclassid=c.nclassid)ond.articleid=a.articleid;


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

程序代码
selecta.*,b.*,c.*from(ctarticlealeftjoinctclassbona.classid=b.classid)leftjoinctnclasscona.nclassid=c.nclassid

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

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

程序代码
InsertINTOcttag(articleid,classid,nclassid,tag)
Selecta.articleid,a.classid,a.nclassid,d.class+''+c.nclass
FROM(ctarticleASaleftjoin(ctnclasscleftjoinctclassdonc.classid=d.classid)ona.classid=c.classidanda.nclassid=c.nclassid)LEFTJOINcttagASbONa.articleid=b.articleidwherea.classid=4anda.nclassid=154;


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

程序代码
InsertINTOcttag(articleid,classid,nclassid,tag)
Selecta.articleid,a.classid,a.nclassid,d.class+c.nclass
FROM(ctarticleASaleftjoin(ctnclasscleftjoinctclassdonc.classid=d.classid)ona.classid=c.classidanda.nclassid=c.nclassid)LEFTJOINcttagASbONa.articleid=b.articleidwherea.classid=1anda.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连接两个表,并追加数据到其中一个表

程序代码
InsertINTOcttag(articleid,classid,nclassid)
Selecta.articleid,a.classid,a.nclassid
FROMctarticleASaLEFTJOINcttagASbONa.articleid=b.articleidwherea.classid=1anda.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同步两表的数据

程序代码
UpdatectarticleaINNERJOINcttagbONa.articleid=b.articleidSETb.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右外连接

程序代码
selecta.*,b.*frombunclassarightjoinctclassbona.classid=b.classidwherea.nclassid=20

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

7.2.3添加数据到连接表之一

程序代码
InsertINTOcttag(tag,articleid)Selecttop1b.tag,a.articleidFROMctarticleASaleftJOINcttagASbONa.articleid=b.articleidWherea.articleidorderbya.articleiddesc;


7.2.2变通中的用法二

程序代码
InsertINTObureply
Selectb.*,a.classid,a.nclassid
FROMarticleASaINNERJOINreplyASbONa.articleid=b.articleid
Whereclassid=50;


7.2.1实际应用中的变通

程序代码
InsertINTObutag(tag,articleid,classid,nclassid)
Selectb.tag,a.articleid,a.classid,a.nclassid
FROMarticleASaINNERJOINtagASbONa.articleid=b.articleid
Whereclassid=24;


7.2添加数据到其他表

程序代码
InsertINTObutag(tag,articleid)
Selectb.tag,a.articleid
FROMarticleASaINNERJOINtagASbONa.articleid=b.articleid
Wherea.articleid<>False;

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

7.1.1实际应用中的变通

程序代码
Selectb.tag,a.articleid,a.classid,a.nclassid
FROMarticleASaINNERJOINtagASbONa.articleid=b.articleid
Wherea.classid=24;


7.1查询

程序代码
Selectb.tag,a.articleid
FROMarticleASaINNERJOINtagASbONa.articleid=b.articleid
Wherea.articleid<>False;

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

7.外连接——交叉查询
提示:注意表中相同的栏目 (责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)