栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号