2012-04-13 41 views

回答

11

答案很簡單:沒有的同等或

http://www.datastax.com/docs/0.8/dml/using_cql

這裏是V0.8命令參考:

http://www.datastax.com/docs/0.8/references/cql#cql-reference

SELECT [FIRST N] [R EVERSED] FROM [USING] [WHERE] [LIMIT N];

..

WHERE子句提供用於過濾顯示在搜索結果中的行。該子句可以過濾一個鍵名稱或鍵的範圍,對於索引列,也可以按列值進行過濾。關鍵過濾器使用KEY關鍵字(一個關係運算符)(=,>,> =,<和< =中的一個)和一個術語值指定。當關系運算符的兩側出現條件時,假定過濾器適用於索引列。使用列索引過濾器時,操作符左側的術語是名稱,右側的術語是要過濾的值。

8

假設COND是你的表的主鍵的名稱,你可以這樣做:

SELECT * from TABLE_NAME WHERE COND1 in ('something', 'something'); 

因此,不存在完全通用OR操作,但看起來這可能相當於你是什麼試圖去做。

請記住,當您使用CQL時,該查詢計劃並不意味着它的優勢之一。 Cassandra代碼通常會假設您擁有大量數據,因此它會盡量避免執行任何可能最終導致代價高昂的查詢。在RMDBS世界中,您根據內在關係(第三範式等)構建數據,而在Cassandra中,您根據預期需要的查詢構建數據。非規範化是(原諒雙關語)規範。需要指出的是,與早期的Thrift RPC接口相比,CQL旨在成爲用於製作Cassandra查詢的更爲熟悉且友好的語法。它的目的不是完全表達和靈活的SQL的方式。

+2

保羅,我已經嘗試了上面的語句,但是它在cql shell中顯示錯誤,指出不匹配的輸入'IN'期望設置爲空。記住在例子中COND1是二級索引。 – abhi 2012-05-10 07:05:40

+0

對。該構造僅適用於主鍵。 – 2012-05-10 15:12:19