Stack Overflow 上提出了以下问题:
“我需要在此表上使用自连接。
+------------+------+--------+
| Country | Rank | Year |
+------------+------+--------+
|France | 55 | 2000 |
+------------+------+--------+
|Canada | 30 | 2000 |
+------------+------+--------+
|Liberia | 59 | 2001 |
+------------+------+--------+
|Turkey | 78 | 2000 |
+------------+------+--------+
|Japan | 65 | 2003 |
+------------+------+--------+
|Romania | 107 | 2001 |
+------------+------+--------+
我需要使用自连接来获取与土耳其同一年份的国家。仅显示国家/地区和年份。”
在选择的正确答案中,推荐的查询之一是:
SELECT DISTINCT a.Country, a.Year
FROM table1 AS a
INNER JOIN table1 AS b
on a.Year=b.Year
and b.Country='Turkey';
我没有收到此查询。难道 a.Year=b.Year
总是正确的 - 因为两个表都是相同的吗?那么使用它有什么必要呢?
上面的查询不是只会返回该国的“土耳其”吗?
如果我错了,请帮助我理解。
非常感谢!
最佳答案
Isn't it that a.Year=b.Year always going to be true?
没有。将此视为首先采用 A 和 B 的笛卡尔积(将 a 的所有行与 b 的所有行匹配),然后选择 a 的年份和 B 的年份相同的那些行。这产生了两个国家同一年份的数据。
利用这些数据,我们可以进一步确定与土耳其配对的国家。
这就是此查询正在执行的操作。
关于mysql - 自连接中的内连接 - MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52941508/