2013-07-17 27 views
1

創建表:卡桑德拉CQL選擇具有行有兩列不同的值

CREATE TABLE T (
      I int PRIMARY KEY, 
      A text, 
      B text 
); 

比我添加使用的兩列XY

ALTER TABLE T ADD X int; 
CREATE INDEX ON T (X); 
ALTER TABLE T ADD Y int; 
CREATE INDEX ON T (Y); 

我把一些數據,現在我會喜歡計算在XY(即使X < Y會沒事)上具有不同值的行。我想是這樣的:

select COUNT(*) from T where X < Y ; 

這也不無COUNT工作 - 只是簡單的*

但是我得到錯誤no viable alternative at input ';' 你有一些建議如何克服這個錯誤? 我試圖使用計數器,而不是整數,但他們強迫我把所有非計數器數據主鍵這是不是好主意在我的情況下...

我使用卡桑德拉1.2.6和CQL 3。

PS我可以在所有行上執行UPDATE?沒有WHERE條款或與一些虛擬的?

+0

你的Y變量沒有編入索引。您是否嘗試過在Y上創建索引,然後運行查詢。 –

+0

他們被編入索引..只是介紹瞭如何添加他們以及如何在一張桌子上設置索引的示例.. – kkonrad

+1

您可以查看CQL參考。我認爲這種關係查詢不受支持。詳情請參閱:http://cassandra.apache.org/doc/cql3/CQL.html#selectStmt –

回答

0

由於Cassandra更喜歡簡單的讀取,所以Cassandra的方法是在update/insert中插入布爾標記的列。使用(輔助)索引,您也可以更快地查詢讀取內容。