2017-10-17 75 views
1

我在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); 
+0

你的描述不清楚。请提供一些示例数据和您想要的输出。 (请参见[如何 格式化堆栈溢出中的SQL表 后?](https://meta.stackexchange.com/q/96125)如何添加一些内容。) –

+0

如果要与SQL中的多个值进行匹配,请使用IN关键字,而不是'=' – Jason

+1

sqlite是否支持'IN'关键字? – cholo

回答

2

将所有希望删除的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 + ");"); 
+0

谢谢。 我们可以使用外键来实现吗,比如使用级联删除?请指教。 – cholo

+0

@cholo这是一个完全不同的问题,它取决于你如何定义'FOREIGN KEY'和'REFERENCES',以及你是否在表中启用了'ON DELETE CASCADE'。 – SushiHangover

+0

我的问题是:https://stackoverflow.com/questions/46775275/cascade-delete-in-sqlite-xamarin-forms 这是没有答案。 – cholo