これが私が作成しているテーブルです。このテーブルには、最後のムンディアルカップをプレイしたプレーヤーに関する情報が含まれています。
CREATE TABLE players (
group text, equipt text, number int, position text, name text,
day int, month int, year int,
club text, liga text, capitan text,
PRIMARY key (name, day, month, year));
次のクエリを実行すると:
選択チームのキャプテンであった最も古いプレーヤーから5つの名前を取得する
これが私のクエリです:
SELECT name FROM players WHERE captain='YES' ORDER BY year DESC LIMIT 5;
そして私はこのエラーを得ています:
パーティションキーがEQまたはINによって制限されている場合にのみサポートされる並べ替え
作成中のテーブルに問題があると思いますが、解決方法がわかりません。
ありがとう。
実行しようとしているクエリのテーブル定義が正しくありません。
パーティションキー「name」、クラスタリング列「day」、「month」、「year」、およびその他のさまざまな列を含むテーブルを定義しました。
Cassandra=すべてのSELECTクエリでは、EQまたはINを使用してパーティションキーを指定する必要があります。クラスタリング列の一部またはすべてを含めることは、慣れている等価演算子と不等価演算子を使用して許可されますSQL。
クラスタリング列は、定義された順序で含める必要があります。 ORDER BY句には、EQによってまだ特定されていないクラスタリング列のみを、定義された順序で含めることができます。
たとえば、クエリを書くことができます
select * from players where name = 'fiticida' and day < 5 order by month desc;
または
select * from players where name = 'fiticida' and day = 10 and month > 2 order by month asc;
だがしかし
select * from players where name = 'fiticida' and year = 2017;
「日」または「月」を含まない
ではなく
select * from players where name = 'fiticida' and day = 5 order by year desc;
「月」は含まれません。
ここ は、SELECTクエリの公式ドキュメントです。
クエリを満たすために、テーブルは