gpt4 book ai didi

c# - 在 Ado.net C# 中动态构建 Where 子句

转载 作者:太空狗 更新时间:2023-10-29 22:56:38 25 4
gpt4 key购买 nike

我将在给定时间接收大约 1000 条记录,我必须确定它们是现有记录还是新记录。

如果它们存在,我必须更新记录,如果是新的,则只需插入它们。我不知道它们中是否存在,或者它们是否都存在。

我认为最好对数据库进行一次查询,并尝试查找数据库中是否存在它们并将它们存储在内存中,然后检查内存中的集合并检查。

最初有人告诉我 1 个字段就足以确定唯一性。所以我想我可以只对数据库中的 1 个字段做 1 个 big in 子句,但现在我发现情况并非如此,我需要使用 3 个字段来确定记录是存在的还是现在。

这基本上是一个 and 子句

select * from where columnA = "1" and ColumnB = "2" and ColumnC = "3"

我如何在 C# ado.net 中正确纠正这个问题?

我猜我需要有一些 super where 子句?

select * from where (columnA = "1" and ColumnB = "2" and ColumnC = "3") or  (columnA = "4" and ColumnB = "5" and ColumnC = "6") or [....998 more conditional clauses)

如果可能的话,我愿意接受更好的想法。我仍然认为一次完成比做 1000 个单独的查询要好。

最佳答案

我只能帮你写query来满足你的要求

        var recordCount = 1000;
var query = "SELECT * FROM TableName WHERE";
for (var i = 1; i < recordCount - 2; i += 3)
{
query += " (columnA = " + i + " and ColumnB = " + (i + 1) + " and ColumnC = " + (i + 2) + ") or ";
}

关于c# - 在 Ado.net C# 中动态构建 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com