2015-12-03 27 views
3

我試圖做一個簡單的選擇在卡桑德拉CQL3包含在恆定的列名的硬編碼值(恆定),我根本無法得到它的工作選擇含量的不同值卡桑德拉

這裏的查詢

SELECT 1 as "id"

做工精細各種DBMS的我使用,但在這裏拋出這個錯誤:

Error: ResponseError: line 1:7 no viable alternative at input '1' (SELECT [1]...)

什麼是正確的語法?

回答

3

不幸的是,CQL不是SQL,像這樣的查詢在cqlsh中不起作用,就像它們在關係對象中一樣。所述DataStax SELECT documentation指示選擇器必須是以下之一:

  1. 列名
  2. WRITETIME(列名稱)
  3. TTL(列名稱)
  4. 功能

現在而SELECT 1 as id查詢可能不起作用,還有其他更有用的事情。舉例來說,如果我需要快速生成UUID,我可以用下面的查詢這樣做:

[email protected]:stackoverflow> SELECT uuid() FROM system.local; 

system.uuid() 
-------------------------------------- 
a55c17f7-d19d-4531-85be-75551e3fd546 

(1 rows) 

這工作方式是這樣的原因有兩個:

  1. 的SELECT子句中調用uuid()函數。

  2. system.local表只包含一行。如果您針對另一個表運行此SELECT,它將返回與CQL行一樣多的UUID。

+0

感謝您的幫助。可悲的是,這對我試圖實現的目標沒有幫助。我的用例很簡單,我需要將針對多個DBMS的查詢鏈接到外部ID。工作正常的是SQL,甚至在MongoDB中,不在這裏。 好像我有兩個選擇,存儲一個包含啞硬編碼ID的表或者將ID從查詢中取出 – arkihillel