我遇到了这个 SQL 语句的问题:
SELECT linkstable.date, (linkstable.count - x.count)
FROM (SELECT .....) AS linkstable
INNER JOIN linkstable AS x
ON linkstable.date = x.date+1
它告诉我,虽然(SQL 错误 1146)显然存在该选择查询的别名,但无法找到链接表。谁能告诉我如何绕过这个错误?
我遇到了这个 SQL 语句的问题:
SELECT linkstable.date, (linkstable.count - x.count)
FROM (SELECT .....) AS linkstable
INNER JOIN linkstable AS x
ON linkstable.date = x.date+1
它告诉我,虽然(SQL 错误 1146)显然存在该选择查询的别名,但无法找到链接表。谁能告诉我如何绕过这个错误?
您不能为别名设置别名。如果要将表连接到自身,请重复选择:
SELECT linkstable.date, (linkstable.count - x.count)
FROM (SELECT .....) AS linkstable
INNER JOIN (SELECT .....) AS x ON linkstable.date = x.date+1
如果内部选择太麻烦或遇到性能问题,请将其结果插入临时表并在主查询中使用。
您不能FROM
像这样在子句中引用子查询的别名。但是,如果您的数据库支持公用表表达式,则可以使用该WITH
子句来完成同样的事情:
WITH linkstable as (SELECT ...)
SELECT linkstable.date, (linkstable.count - x.count)
FROM linkstable
INNER JOIN linkstable AS x
ON linkstable.date = x.date+1