Android 如何在SQLITE中使用JOIN从2个表中删除数据
我有下表 我想从两个表中删除与productId对应的数据。我已经研究过连接不能在sqlite中与DELETE一起应用,所以我尝试了下面的查询Android 如何在SQLITE中使用JOIN从2个表中删除数据,android,sqlite,join,subquery,android-sqlite,Android,Sqlite,Join,Subquery,Android Sqlite,我有下表 我想从两个表中删除与productId对应的数据。我已经研究过连接不能在sqlite中与DELETE一起应用,所以我尝试了下面的查询 DELETE FROM optionToValues WHERE optionToValues.optionId IN (SELECT optionToValues.optionId FROM optionToValues JOIN productOptions on productOptions.optionId = optionToValue
DELETE FROM optionToValues WHERE optionToValues.optionId IN
(SELECT optionToValues.optionId
FROM optionToValues
JOIN productOptions on productOptions.optionId = optionToValues.optionId
WHERE productOptions.product_id = 82)
但不执行删除操作。请给我一些建议,我们如何才能做到这一点。感谢您的帮助 你会想要这个的--
及
这听起来像是
optionValue。optionid
应该是productOptions的外键。optionid
在删除级联时使用。这样,当您从productOptions
中删除条目时,optionValue
中相应的条目将被删除
或者,您可以在productOptions
上定义一个触发器,该触发器将删除optionValue
行。该查询实际上没有意义。您正在一组optionID中查找产品标识。也许您只想从product\u id=82的productOptions中删除?如果没有,你到底想做什么?或者你想删除某个产品的所有选项?@323go我必须删除productoptions,然后该产品也无法用一条语句“从两个表中删除数据”。您可以通过外键操作(例如,在获得无效关系的情况下执行限制
删除操作,或者跨表执行级联
删除操作)来实现这一点:
DELETE
FROM optionToValues
WHERE optionId IN ( SELECT optionId FROM productOptions WHERE product_id = 82 )
DELETE
FROM productOptions
WHERE product_id = 82