2

このように定義された SQLite テーブルがあります。

CREATE TABLE Points(value INTEGER, player INTEGER, match INTEGER)

実行中に、同じ列がいくつかある可能性があり、すべてを削除したり、1 つだけを保持したりするのではなく、1 つだけを削除する呼び出しが必要です。それを行うためのSQL呼び出しはありますか?

自分自身をより明確に説明する例:

value player match
1     2      3
1     3      3
1     2      3
2     2      3
1     2      3
1     2      3
1     3      3

db.delete("Points", "value = 1, player = 2, match = 3", null); //pseudo-code for the deletion
db.delete("Points", "value = 1, player = 3, match = 3", null);

value player match
1     2      3
2     2      3
1     2      3
1     2      3
1     3      3

私は db.delete("Points", "value = 1, player = 3, match = 3", null); だと思います。where句に一致するすべての列を削除しますよね?

4

3 に答える 3

0

これを行う通常の方法は、すべてのテーブルに各行の一意の識別子を割り当てることです。このような:

CREATE TABLE Points(Id INTEGER PRIMARY KEY, value INTEGER, player INTEGER, match INTEGER);

次に、サブクエリを使用して、削除する 1 つの行を見つけることができます。

DELETE FROM Points WHERE Id =(SELECT MIN(Id) FROM Points WHERE value=1 AND player=2 and match=3);

この例では、最初に入力された最も古いレコードを削除します (最も古いレコードの一意のキー ID が最も小さい)。

于 2015-03-12T19:24:22.597 に答える