我遇到了这条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)显然有一个别选择查询。任何人都可以告诉我,我该如何绕过这个错误?
答案 0 :(得分:5)
您不能为别名添加别名。如果要将表连接到自身,请重复选择:
SELECT linkstable.date, (linkstable.count - x.count)
FROM (SELECT .....) AS linkstable
INNER JOIN (SELECT .....) AS x ON linkstable.date = x.date+1
如果内部选择太麻烦或者您遇到性能问题,请将其结果插入临时表并在主查询中使用它。
答案 1 :(得分:3)
您无法在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