2017-10-17 68 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