SQL INNER JOIN没有看到表别名

use*_*010 1 sql

我在使用这个SQL语句时遇到问题:

SELECT linkstable.date, (linkstable.count - x.count) 
FROM (SELECT .....) AS linkstable 
INNER JOIN linkstable AS x 
  ON linkstable.date = x.date+1 
Run Code Online (Sandbox Code Playgroud)

它告诉我找不到链表,尽管(SQL错误1146)显然存在该选择查询的别名.任何人都可以告诉我,我该如何绕过这个错误?

Yur*_*ter 5

您不能别名别名.如果要将表连接到自身,请重复选择:

SELECT linkstable.date, (linkstable.count - x.count) 
FROM (SELECT .....) AS linkstable 
INNER JOIN (SELECT .....) AS x ON linkstable.date = x.date+1
Run Code Online (Sandbox Code Playgroud)

如果内部选择太麻烦或者您遇到性能问题,请将其结果插入临时表并在主查询中使用它.

  • @ msmucker0527你是对的.OP需要明确这一点.当然OP也应该清理RDBMS.例如,如果这是SQL 2008并且我的假设是错误的那么我将使用Common表表达式而不是临时表或表变量.但如果它是MySQL,那么Yuriy是正确的. (2认同)