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,但仅适用于不删除的选择查询。

它是如何工作的?

[更新] 我可以通过将两个子查询分隔在两个删除语句中来降低复杂性,但是每个人都有一个连接,所以这不是一个解决方案。这也行不通。

[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 回答