2017-01-23 2 views
1

私は2つのテーブルを1つはユーザ、もう1つはexpired_usersです。カッサンドラ:別のクエリの入力として1つのクエリの出力を使用する

ユーザーcolumns-> ID、氏名、年齢 expired_users列 - > ID、名前

私は次のクエリを実行します。

ユーザからの削除ここで、idは(expired_usersからのselect id)です。

このクエリはSQL関連のデータベースで正常に動作します。私はこの問題をカッサンドラで解決する解決策を探しています。

PS:テーブルに余分な列を追加したくありません。

答えて

2

カサンドラデータモデルを設計するとき、RDBMSとまったく同じように考えることはできません。このような デザイン -

create table users (
id int, 
name text, 
age int, 
expired boolean static, 
primary key (id,name) 
); 

期限切れのように、ユーザーをマークするために - ちょうどちょうどそれを再度挿入し、あなたが行を更新または削除する必要はありません再び

insert into users (id,name,age,expired) values (100,'xyz',80,true); 

を同じ行を挿入以前の列の値がオーバーライドされます。

+0

これは私の目的を解決しません。私は既存のテーブル構造を変更することはできません。 –

+0

@Bhanu Boppana問題のテーブル定義を追加する方が良いでしょう。 – Gunwant

+0

質問に私のテーブルにある列を追加しました。詳細が必要な場合はお知らせください。 –

1

あなたは、あなたのdeleteステートメントのフィルタとしてjoinを使用することを望んでいますが、これはCassandraモデルが構築されているものではありません。

AFAIKこれを行うには、cqlを使用する方法はありません。スキーマを変更せずにこの操作を実行する場合は、外部スクリプトをCassandra用のドライバを持つ言語で実行します。

関連する問題