Sql 相关子查询中没有这样的列

Sql 相关子查询中没有这样的列,sql,sqlite,correlated-subquery,Sql,Sqlite,Correlated Subquery,因此,我编写了一个与中描述的查询几乎相同的查询。然而,我得到一个错误:没有这样的列b.when 我的选择声明: SELECT mileage, (SELECT b.mileage FROM MileageEvents as b WHERE `b.when` < `a.when` ORDER BY `b.when` DESC LIMIT 1) as last_mileage, gallons, cost_per_gallon, `when` FROM

因此,我编写了一个与中描述的查询几乎相同的查询。然而,我得到一个错误:没有这样的列
b.when

我的选择声明:

SELECT
    mileage,
    (SELECT b.mileage FROM MileageEvents as b WHERE `b.when` < `a.when` ORDER BY `b.when` DESC LIMIT 1) as last_mileage,
    gallons,
    cost_per_gallon,
    `when`
FROM MileageEvents as a
(首先,我会使用普通的双引号转义,而不是MySQL样式的倒勾,或者更好的是,使用一个不是保留关键字的标识符)

您需要在“时使用
b.”。您所做的是将整个字符串
b.when
作为标识符,表名和列名之间没有拆分

重写:

SELECT
    mileage,
    (SELECT b.mileage FROM MileageEvents as b WHERE b."when" < a."when" ORDER BY b."when" DESC LIMIT 1) as last_mileage,
    gallons,
    cost_per_gallon,
    "when"
FROM MileageEvents as a;
(首先,我会使用普通的双引号转义,而不是MySQL样式的倒勾,或者更好的是,使用一个不是保留关键字的标识符)

您需要在“
时使用
b.”。您所做的是将整个字符串
b.when
作为标识符,表名和列名之间没有拆分

重写:

SELECT
    mileage,
    (SELECT b.mileage FROM MileageEvents as b WHERE b."when" < a."when" ORDER BY b."when" DESC LIMIT 1) as last_mileage,
    gallons,
    cost_per_gallon,
    "when"
FROM MileageEvents as a;
SELECT
    mileage,
    lag(mileage) OVER (ORDER BY "when") AS last_mileage,
    gallons,
    cost_per_gallon,
    "when"
FROM MileageEvents;