2010-07-23 26 views
2

創建視圖時,分配給列的名稱在sqlite中並不總是可用,以便以後執行特定的操作。 例如,我創建了以下觀點:在sqlite中使用cid而不是列名?

CREATE VIEW myview AS 
    SELECT amount, count(name), name 
    FROM mytable 
GROUP BY name 
    HAVING count(name) > 1; 

然後,我願做如下操作:

SELECT total(amount*count(name)) 
    FROM myview; 

不幸的是,數(名)是sqlite的給予第二列名因此,不能用在select語句中。 PRAGMA table_info(myview)向我們展示了計數(名稱)的cid是1,是否有使用此信息能夠對該列進行一些計算?

回答

2

您需要定義列別名:

CREATE VIEW myview AS 
    SELECT amount, 
     COUNT(name) AS name_count, 
     name 
    FROM mytable 
GROUP BY name 
    HAVING count(name) > 1; 

然後,你就可以使用:

SELECT SUM(v.amount * v.name_count) 
    FROM myview v; 

我爲SUM變出total,這是與其他數據庫更一致(SQLite aggregate functions)。

+0

謝謝,這回答我的問題! – banx 2010-07-24 09:43:01

0
SELECT total(amount*"count(name)") 
    FROM myview; 

也適用。正如上面的用戶所表明的那樣,在可以的時候更好地列出列。

但是,有時你處於一種束縛中,並沒有那種奢侈。如果您引用該名稱,則可以按原樣使用它。

相關問題