SELECT 常量值为 Cassandra

ark*_*lel 5 cql cassandra cql3

我试图在 Cassandra CQL3 中做一个简单的选择,其中包含一个常量列名下的硬编码值(常量),但我根本无法让它工作

这是查询

SELECT 1 as "id"

在我使用的各种 DBMS 中都可以正常工作,但在此处引发此错误:

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

什么是正确的语法?

Aar*_*ron 6

不幸的是,CQL 不是 SQL,并且像这样的查询在 cqlsh 中不能像在它们的关系对应项中那样工作。DataStax SELECT 文档指出选择器必须是以下之一:

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

现在,虽然SELECT 1 as id查询可能不起作用,但还有其他一些更有用的事情可以做。例如,如果我需要快速生成一个 UUID,我可以使用以下查询来实现:

aploetz@cqlsh:stackoverflow> SELECT uuid() FROM system.local;

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

(1 rows)
Run Code Online (Sandbox Code Playgroud)

这样做的原因有两个:

  1. SELECT 子句调用 uuid() 函数。

  2. system.local 表只包含一行。如果您对另一个表运行此 SELECT,它将返回与 CQL 行一样多的 UUID。