SQFlite-通过联接抛出删除行:接近LEFT语法错误



我目前正在处理一个购物列表,用户可以拥有多个列表,并能够在不同的表上添加不同的项目。也可以检查这些项目。一切都很好,但当我想删除一些选中的项目时,它会给我一个错误:

D/Sqflite(10847(:[Thread[Sqflite,5,main]]从shoppingTitles删除LEFT在shoppingTitles.idShopping=shopping.id LEFT上加入购物加入listTitles ON shoppingTitles.idTitles=listTitles.id WHEREshopping.checked=1 AND listTitles.titleName=?[Enkaufsliste]E/SQLiteLog(10847(:(1(靠近"LEFT":语法错误

这是我的sql查询:

DELETE 
FROM shoppingTitles 
LEFT JOIN shopping ON shoppingTitles.idShopping = shopping.id
LEFT JOIN listTitles ON shoppingTitles.idTitles = listTitles.id
WHERE shopping.checked = 1
AND listTitles.titleName = "Liste"

我希望有人能帮助我。提前感谢XD


根据Akn提供的答案找到我的解决方案

DELETE FROM shoppingTitles 
WHERE idShopping IN (
SELECT shoppingTitles.idShopping
FROM shoppingTitles, shopping, listTitles
WHERE shopping.id = shoppingTitles.idShopping
AND shoppingTitles.idTitles = listTitles.id
AND shopping.checked = 1
AND listTitles.titleName = "Liste"
)

这样试试:

DELETE S
FROM
shoppingTitles S
LEFT JOIN shopping ON S.idShopping = shopping.id
LEFT JOIN listTitles ON S.idTitles = listTitles.id
WHERE
shopping.checked = 1
AND listTitles.titleName = "Liste"

更新:猜测,DELETE语句中不支持JOINs,因此您最好找到使用SELECT语句的方法。下面的SELECT语句将返回一个id。如果它与您的myIdShopping匹配,它将被删除。我无法检查/运行代码。希望它能起作用。

DELETE FROM
shoppingTitles
WHERE
myIdShopping IN(
SELECT
shoppingTitles.idShopping
FROM
shoppingTitles
LEFT JOIN shopping ON shoppingTitles.idShopping = shopping.id
LEFT JOIN listTitles ON shoppingTitles.idTitles = listTitles.id
WHERE
shopping.checked = 1
AND listTitles.titleName = "Liste"
)

最新更新