栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL的。如何使用自我加入

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL的。如何使用自我加入

你好亲密!

因为您说的是显示A的国家和年份,并限制了

A. Country
土耳其,所以您将只看到土耳其。您需要将selects更改为
B.country
and
B.year
或将where子句更改为
B.country
。

这是使用交叉联接的,表中的记录越多,交叉联接的速度就会越慢。

SELECT DISTINCT b.Country, b.Year FROM table1 AS a,      table1 AS b WHERe a.Year=b.Year   and a.Country='Turkey';

可以写为…,并且可能具有相同的执行计划。

SELECt DISTINCT b.Country, b.Year FROM table1 AS a CROSS JOIN table1 AS b WHERe a.Year=b.Year   and a.Country='Turkey';

或这使用了INNER JOIN,它限制了引擎必须完成的工作,并且不会遭受交叉联接可能导致的性能下降。

SELECt DISTINCT a.Country, a.Year FROM table1 AS a INNER JOIN table1 AS b    on a.Year=b.Year   and b.Country='Turkey';

为什么:

考虑一下AB发生联接时SQL引擎将做什么

+------------+------+--------+------------+------+--------+| A.Country  | Rank |  Year  | B.Country  | Rank |  Year  |+------------+------+--------+------------+------+--------+|France      |  55  |  2000  |France      |  55  |  2000  |+------------+------+--------+------------+------+--------+|Canada      |  30  |  2000  |France      |  55  |  2000  |+------------+------+--------+------------+------+--------+ |Turkey      |  78  |  2000  |France      |  55  |  2000  |+------------+------+--------+------------+------+--------+ |France      |  55  |  2000  |Canada      |  30  |  2000  |+------------+------+--------+------------+------+--------+|Canada      |  30  |  2000  |Canada      |  30  |  2000  |+------------+------+--------+------------+------+--------+ |Turkey      |  78  |  2000  |Canada      |  30  |  2000  |+------------+------+--------+------------+------+--------+ |France      |  55  |  2000  |Turkey      |  78  |  2000  |+------------+------+--------+------------+------+--------+|Canada      |  30  |  2000  |Turkey      |  78  |  2000  |+------------+------+--------+------------+------+--------+ |Turkey      |  78  |  2000  |Turkey      |  78  |  2000  |+------------+------+--------+------------+------+--------+

因此,当您说展示广告

A.Country
以及土耳其
A.Year
在哪里时
A.Country
,您可以看到它可以返回的全部是土耳其(由于唯一的1条记录)

但是,如果您选择的

B.Country
是土耳其并展示
A.Country
,您将获得法国,加拿大和土耳其!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/398885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号