1

次のような複雑な削除ステートメントを実行する必要があります。

DELETE FROM
(Select t1._id, t1.subject, t1.predicate, t1.object from t1
INNER JOIN t1 AS t2 ON t1.subject=t2.subject
WHERE t2.object='ID20447_325762212'
UNION
Select t1._id, t11.subject, t1.predicate, t1.object from t1
INNER JOIN t1 AS t2 ON t1.object=t2.subject
WHERE t2.object='ID20447_325762212')

SQLitedabatase#delete(Table, selection, selectionArgs) は使えないと思います。結合と結合を持つ方法はありません。SQLiteQueryBuilder には、setTables(joinString) を使用した JOIN と、subQuery() および Unionquery を使用した UNION がありますが、selectqueries のみが削除されません。

それはどのように機能しますか?

[更新] 2 つの削除ステートメントで両方のサブクエリを分離することで複雑さを軽減できましたが、全員に結合があるため、解決策ではありません。そして、それもうまくいきません。

[update2] これは、削除したいテーブルの行のスクリーンショットです。 db-table からスクリーンショットを更新します

私のアプリには、ID...2328 (行 2) のオブジェクトと、そのスクリーンショットの行で表されるプロパティ (関係) があります。リレーションは ID ...212 のオブジェクトを対象としています。そのオブジェクトとすべてのプロパティを削除する必要があります

4

1 に答える 1

2

サブクエリで複雑な選択を使用できます。一般的なケースでは、次のようになります。

DELETE FROM SomeTable WHERE _id IN (SELECT _id FROM ...complex query...)

ただし、この特定のクエリはそれほど複雑ではありません。

DELETE FROM t1
WHERE subject = (SELECT subject FROM t1 WHERE object = 'ID20447_325762212')
   OR object  = (SELECT subject FROM t1 WHERE object = 'ID20447_325762212')
于 2013-10-17T12:09:58.153 に答える