我有一個postgresql數據庫,我試圖做的是從儘可能少的查詢中刪除表中的一堆行。所以循環不是一個好的選擇。我正在使用NPGSQL作爲postgres驅動程序。使用WHERE IN子句刪除PostgreSQL中的多行使用WHERE IN子句
我有下面的代碼,但它不工作。試圖執行的最後一個查詢時錯誤
string[] namesToDelete = PromosReplies.
PromosRepliesLoaded.GroupBy(pr => pr.Name).
Select(r=>r.Key).ToArray();
long[] repliesIdsToDelete = context.PromosReplies.
Where(pr => namesToDelete.Contains(pr.Name)).
Select(r => r.Idx).ToArray();
if (repliesIdsToDelete.Length > 0)
{
foreach (var name in namesToDelete)
{
context.Database.ExecuteSqlCommand("DELETE FROM messages WHERE name = {0}", name);
}
string idToDelete = String.Join(",", repliesIdsToDelete);
int result = context.Database.ExecuteSqlCommand(
"DELETE FROM message_translations WHERE idx IN ({0})",
repliesIdsToDelete);
我得到一個「錯誤:22P02:無效的輸入語法整數」。有沒有辦法解決這個問題?如果是的話,我可以使用第一個刪除語句來做類似的事情嗎?
同樣的錯誤。這個=號是我的一個錯字。 – idipous
@idipous你是否嘗試過傳遞字符串(不是列表)?改變了答案,檢查它 –
@idipous可以用'string.format'嘗試嗎? –