mySQL自连接-内部连接或连接

mySQL自连接-内部连接或连接,mysql,sql,inner-join,Mysql,Sql,Inner Join,快速澄清。当连接来自同一个表的内容时,我必须始终将连接类型声明为内部吗 比如说, SELECT p1.country_code, p1.size AS size2010, p2.size AS size2015 FROM populations AS p1 INNER JOIN populations AS p2 ON p1.country_code = p2.country_code; (在此屏幕截图中显示的表格上) 当我试图删除关键字INNER时

快速澄清。当连接来自同一个表的内容时,我必须始终将连接类型声明为内部吗

比如说,

SELECT p1.country_code,
       p1.size AS size2010,
       p2.size AS size2015
FROM populations AS p1
  INNER JOIN populations AS p2
    ON  p1.country_code = p2.country_code;
(在此屏幕截图中显示的表格上)

当我试图删除关键字INNER时,它是错误的。是因为SQL中不存在联接吗

感谢和干杯。

您确实希望在此处加入自我(内部)加入,但您缺少将每个表限制为特定年份的逻辑:

SELECT
    p1.country_code,
    p1.size AS size2010,
    p2.size AS size2015
FROM populations AS p1
INNER JOIN populations AS p2
    ON p1.country_code = p2.country_code
WHERE
    p1.year = 2010 AND
    p2.year = 2015;

不指定联接类型的联接是内部联接的一种类型。但指定联接类型更安全。不保存字节。。。你不能在任何地方使用它们。你使用的是MySQL还是SQLite?它们不是一回事。当我试图删除关键字INNER时,它是错误的。什么“它”?查询本身还是返回结果?@akina,收到了,谢谢!哦,我明白了,为什么我需要where子句来指定年份?您加入的逻辑是匹配两个国家代码相同但年份不同的记录(2010年从第一个国家开始,2015年从第二个国家开始)。请问这是否与编写
选择p1.country\u code,p1.size作为size2010相同,p2.size作为大小2015,从p1作为内部连接的群体中选择p1作为p1上的p2。country_代码=p2.country_代码,p1.year=p2.year-5
@Rosellx是的,它在逻辑上是相同的,因为正在使用内部联接。如果我们使用左连接,那么它就不一样了。