当前位置: 首页 > news >正文

从零开始学网站建设风云榜

从零开始学网站建设,风云榜,营销型网站模板免费下载,网站右键禁止备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊常见的表连接的方法 测试数据: create table t1(id int); create table t2(id int);insert into t1 values(1); insert into t1 values(2);insert into t2 values(2); insert into t2 values(3); commit;内连接 --求交集 …

备注:测试数据库版本为MySQL 8.0

这个blog我们来聊聊常见的表连接的方法

测试数据:

create table t1(id int);
create table t2(id int);insert into t1 values(1);
insert into t1 values(2);insert into t2 values(2);
insert into t2 values(3);
commit;

内连接 --求交集

image.png

select t1.id,t2.id id2
from t1
inner join t2on t1.id = t2.id;
--或者
select t1.id,t2.id id2
from t1,t2
where t1.id = t2.id;

 

mysql> select t1.id,t2.id id2-> from t1-> inner join t2->      on t1.id = t2.id;
+------+------+
| id   | id2  |
+------+------+
|    2 |    2 |
+------+------+
1 row in set (0.01 sec)mysql> select t1.id,t2.id id2-> from t1,t2-> where t1.id = t2.id;
+------+------+
| id   | id2  |
+------+------+
|    2 |    2 |
+------+------+
1 row in set (0.00 sec)

左连接 --求A的全部

image.png

select t1.id,t2.id id2
from t1
left join t2on t1.id = t2.id;
mysql> select t1.id,t2.id id2-> from t1-> left join t2->   on t1.id = t2.id;
+------+------+
| id   | id2  |
+------+------+
|    2 |    2 |
|    1 | NULL |
+------+------+
2 rows in set (0.00 sec)

左连接 --实现A-B的差集

image.png

select t1.id,t2.id id2
from t1
left join t2on t1.id = t2.id
where t2.id is null;
mysql> select t1.id,t2.id id2-> from t1-> left join t2->   on t1.id = t2.id-> where t2.id is null;
+------+------+
| id   | id2  |
+------+------+
|    1 | NULL |
+------+------+
1 row in set (0.00 sec)

全连接 – A union B 求合集

image.png 

oracle里面有full join,但是在mysql中没有full join。我们可以使用union来达到目的。

select t1.id id1,t2.id id2
from t1
left join t2
on t1.id = t2.id
union
select t1.id id1,t2.id id2
from t1
right join t2
on t1.id = t2.id
mysql> select t1.id id1,t2.id id2-> from t1-> left join t2-> on t1.id = t2.id-> union-> select t1.id id1,t2.id id2-> from t1-> right join t2-> on t1.id = t2.id;
+------+------+
| id1  | id2  |
+------+------+
|    2 |    2 |
|    1 | NULL |
| NULL |    3 |
+------+------+
3 rows in set (0.00 sec)

全连接实现-去交集 

image.png

select t1.id id1,t2.id id2
from t1
left join t2
on t1.id = t2.id
where t2.id is null
union
select t1.id id1,t2.id id2
from t1
right join t2
on t1.id = t2.id
where t1.id is null;
mysql> select t1.id id1,t2.id id2-> from t1-> left join t2-> on t1.id = t2.id-> where t2.id is null-> union-> select t1.id id1,t2.id id2-> from t1-> right join t2-> on t1.id = t2.id-> where t1.id is null;
+------+------+
| id1  | id2  |
+------+------+
|    1 | NULL |
| NULL |    3 |
+------+------+
2 rows in set (0.00 sec)

右连接实现-B-A 求差集 

image.png 

select t1.id,t2.id id2
from t1
right join t2on t1.id = t2.id
where t1.id is null;
mysql> select t1.id,t2.id id2-> from t1-> right join t2->   on t1.id = t2.id-> where t1.id is null;
+------+------+
| id   | id2  |
+------+------+
| NULL |    3 |
+------+------+
1 row in set (0.00 sec)

右连接 --求B的全部 

image.png

select t1.id,t2.id id2
from t1
right join t2on t1.id = t2.id;
mysql> select t1.id,t2.id id2-> from t1-> right join t2->  on t1.id = t2.id;
+------+------+
| id   | id2  |
+------+------+
|    2 |    2 |
| NULL |    3 |
+------+------+
2 rows in set (0.00 sec)

表的笛卡尔积

如果表连接没有带条件,则会产生笛卡尔积
假设A表和B表都是10条记录,且一一对应,这个时候A、B两个表无关联条件下的查询,会产生10*10 100条数据。
笛卡尔积在开发中,大多数时候都是不可取的,严重的影响性能,我就优化过不写表关联条件再来distinct去重的开发写的sql。

今天我们来讲讲一个笛卡尔积的例子。

测试数据:
 

create table test1(c  varchar(200));
insert into test1 values('中国');
insert into test1 values('美国');
insert into test1 values('日本');
insert into test1 values('韩国');
commit;

现在有4个国家要进行比赛,每个国家都要和除了自己之外的另外3个国家进行比赛,这个sql如何写?

--通过表连接构造一个笛卡尔积
select t1.c c1,t2.c c2
from test1 t1,test1 t2
where 1 = 1
order by t1.c,t2.c;
--去掉自己和自己的
select t1.c c1,t2.c c2
from test1 t1,test1 t2
where t1.c != t2.c
order by t1.c,t2.c;
mysql> select t1.c c1,t2.c c2-> from test1 t1,test1 t2-> where 1 = 1-> order by t1.c,t2.c;
+--------+--------+
| c1     | c2     |
+--------+--------+
| 中国   | 中国   |
| 中国   | 日本   |
| 中国   | 美国   |
| 中国   | 韩国   |
| 日本   | 中国   |
| 日本   | 日本   |
| 日本   | 美国   |
| 日本   | 韩国   |
| 美国   | 中国   |
| 美国   | 日本   |
| 美国   | 美国   |
| 美国   | 韩国   |
| 韩国   | 中国   |
| 韩国   | 日本   |
| 韩国   | 美国   |
| 韩国   | 韩国   |
+--------+--------+
16 rows in set (0.00 sec)mysql> select t1.c c1,t2.c c2-> from test1 t1,test1 t2-> where t1.c != t2.c-> order by t1.c,t2.c;
+--------+--------+
| c1     | c2     |
+--------+--------+
| 中国   | 日本   |
| 中国   | 美国   |
| 中国   | 韩国   |
| 日本   | 中国   |
| 日本   | 美国   |
| 日本   | 韩国   |
| 美国   | 中国   |
| 美国   | 日本   |
| 美国   | 韩国   |
| 韩国   | 中国   |
| 韩国   | 日本   |
| 韩国   | 美国   |
+--------+--------+
12 rows in set (0.00 sec)

 

http://www.ds6.com.cn/news/44775.html

相关文章:

  • 网站建设的开发方式电商运营培训
  • 网站可以做多少优化关键词获客软件
  • 高档手表网站看seo
  • 黄山旅游攻略五日游自由行攻略网站seo文章
  • 网站的橱窗怎么做成功营销案例分享
  • 如何用域名做邮箱 网站如何做网页链接
  • dedecms行业协会网站织梦模板seo优化在哪里学
  • 网站建设得花多少钱seo整站优化更能准确获得客户
  • 建站步骤图爱站网seo培训
  • mini主机做网站服务器优化百度seo技术搜索引擎
  • 阿里云域名购买流程搜索引擎seo外包
  • 做微网站价格网站排名优化工具
  • 武汉做鸭兼职网站太原seo推广
  • 什么直播可以做游戏视频网站怎么自己建立一个网站
  • 自己做网站背景图片中国体育新闻
  • 简单的网站建设方案关键词优化如何
  • 拿网站做商标网站排名首页
  • 甜品网站建设规划怎么做网站教程
  • 网站建设需要软件卖链接的网站
  • 推广公司兴田德润活动怎么样优化关键词排名
  • 网站建设与管理适合男的还是女的如何对seo进行优化
  • 青海省建设厅网站 职称如何获取网站的seo
  • 国外好的室内设计网站cpc广告接单平台
  • 国外做机械设计任务的网站360网址导航
  • 如何在网站上做淘宝客推广百家港 seo服务
  • 建设大型网站设计公司客服系统网页源码2022免费
  • 做彩票网站捉怎么处理深圳发布最新通告
  • 网站seo关键字做什么推广最赚钱
  • 企业网站外包建设aso优化教程
  • 最专业网站建设哪家好网站推广营销运营方式