2015-12-03 3 views
3

Я пытаюсь сделать простой выбор в Cassandra CQL3 содержащим жёстко прописанного значения (постоянный) под постоянным именем столбца, и я просто не могу заставить его работатьВЫБРАТЬ Contant значения Кассандра

Вот запрос

SELECT 1 as "id"

прекрасно работает на всех видах СУБД, которые я использую, но выдает эту ошибку здесь:

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 в другую таблицу, он вернет столько UUID, сколько было бы строк CQL.

+0

Спасибо за помощь. К сожалению, это не поможет в том, чего я пытаюсь достичь. Мой вариант использования прост, мне нужно связать запросы, сделанные с несколькими СУБД, с внешним ID. Хорошо работает SQL и даже в MongoDB, а не здесь. Похоже, у меня есть два варианта: хранить таблицу, содержащую немые жесткокодированные идентификаторы, или получить идентификатор из запроса – arkihillel

Смежные вопросы