删除sqlite中的where子句
我在Xamarin Forms中使用的sqlite中有以下查询。删除sqlite中的where子句
所有的allProdsId = new List<Products>();
首先,我提出从表中检索的产品的所有产品ID的查询:
allProdsId
作为被初始化。然后我想删除所有订单,其中ProdId
所有的allProdsId
检索。
删除查询不起作用。有人可以帮助我使用xamarin表单来实现sqlite中的WHERE IN
子句吗?
allProdsId = _con.Query<Products>("Select ProdId from Products");
con.Execute("DELETE FROM Orders WHERE ProdId = ?", allProdsId);
将所有希望删除的ProdId的逗号分隔的字符串进行分隔,并将其直接插入到SQL字符串中。
var productIDs = conn.Query<Products>("Select ProdId from Products");
var prodIDCommaString = string.Join(",", productIDs.Select(p => p.ProdId));
var deleteCount = conn.Execute("delete from Products where ProdId in (" + prodIDCommaString + ");");
谢谢。 我们可以使用外键来实现吗,比如使用级联删除?请指教。 – cholo
@cholo这是一个完全不同的问题,它取决于你如何定义'FOREIGN KEY'和'REFERENCES',以及你是否在表中启用了'ON DELETE CASCADE'。 – SushiHangover
我的问题是:https://*.com/questions/46775275/cascade-delete-in-sqlite-xamarin-forms 这是没有答案。 – cholo
你的描述不清楚。请提供一些示例数据和您想要的输出。 (请参见[如何 格式化堆栈溢出中的SQL表 后?](https://meta.stackexchange.com/q/96125)如何添加一些内容。) –
如果要与SQL中的多个值进行匹配,请使用IN关键字,而不是'=' – Jason
sqlite是否支持'IN'关键字? – cholo