2011-09-01 23 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