2011-09-01 67 views
1

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

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

当colC在线上被引用来计算colD时,查询会爆炸。因为我在colD之前定义了colC,所以我希望能够工作。

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

回答

0

每本:

SQLite不(目前)作出有关
查询中省略了AS子句列名的任何承诺。

我建议尝试此:

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

这有可能是计算值不混叠,直到ResultSet是准备去...或者其它某种这样的计时问题。为什么不简单地重复这样的计算:

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

这样就避免了必须读取别名计算列。

+0

嗯......好,我的查询比我的例子更加复杂了不少,但你的战略本质工作。谢谢。 – Andrew

2

您可以使用子查询:

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