引用不存在的列

时间:2011-09-01 19:22:42

标签: sqlite

我有一个SQLite3查询,因为列不存在而爆炸。以下是查询的简化版本:

SELECT
    colA,
    colB,
    (colA + colB) colC,
    (colA + colB + colC) colD
FROM
    myTable

在计算colD的行上引用colC时,查询正在爆炸。我希望,因为我在colD之前定义了colC,它会起作用。

我能做些什么来实现我想要的东西?我需要在运行查询时计算colC。

2 个答案:

答案 0 :(得分:2)

您可以使用子查询:

SELECT
    colA,
    colB,
    colC,
    (colA + colB + colC) colD
FROM (
    SELECT
        colA,
        colB,
        (colA + colB) colC
    FROM
        myTable
) x

答案 1 :(得分:0)

Per this:

  

SQLite(目前)没有对关于列名的任何承诺做出承诺   省略AS子句的查询。

我建议尝试这个:

SELECT
    colA,
    colB,
    (colA + colB) AS colC,
    (colA + colB + colC) AS colD
FROM
    myTable

在结果集准备就绪之前,计算出的值可能不会出现别名......或其他一些此类计时问题。为什么不简单地重复这样的计算:

SELECT
    colA,
    colB,
    (colA + colB) colC,
    (colA + colB + colA + colB) colD
FROM
    myTable

这样就可以避免读取别名的计算列。