Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从SQL DB中选择与.NET datatable记录包含相同ID的记录_.net_Sql_Datatable - Fatal编程技术网

如何从SQL DB中选择与.NET datatable记录包含相同ID的记录

如何从SQL DB中选择与.NET datatable记录包含相同ID的记录,.net,sql,datatable,.net,Sql,Datatable,我正在将一个包含数千行的CSV文件加载到一个.NET数据表中,该表如下所示: var numbers = localTable.Rows.Cast<DataRow>() .Select(r => r.Field<string>("SequenceNo")) .ToArray(); var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})"; var que

我正在将一个包含数千行的CSV文件加载到一个.NET数据表中,该表如下所示:

var numbers = localTable.Rows.Cast<DataRow>()
    .Select(r => r.Field<string>("SequenceNo"))
    .ToArray();

var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})";

var queryText = string.Format(queryTemplate, numbers);
select * from MySQLBDTable where IdentityID in (1,2,3,4,5,6,7,8,9,10)
union
select * from MySQLBDTable where IdentityID in (11,12,13,14,15,16,17,18,19,20)
MyLocalDataTable 不, 等

我在SQL数据库中有一个表,我想根据在CSV文件中找到的内容将记录拉入另一个数据表

MySQLBDTable 标识ID, 不, 等

SequenceNo是我的公共字段。我想对MySQLBDTable执行一个SELECT操作,该操作只返回MyLocalDataTable中带有SequenceNo的行。我不知道该怎么做。我希望避免使用数千个WHERE-SequenceNo=子句的SELECT查询


有没有一种简单有效的方法可以做到这一点?

将序列号值转储到暂存表中,这是一个“临时”表,只包含一列,类型正确,可以保存序列号

如果您使用的是SQL Server,则可以使用大容量插入来完成此操作,这非常快

然后,执行一条SQL语句,该语句将该临时表的内容用于join或IN子句,以查找数据库中的现有行

例如:

UPDATE yourtable
SET does_exist = 1
WHERE sequence_no IN (SELECT sequence_no FROM staging_table)

将序列号值转储到暂存表(仅包含一列的“临时”表)中,该表的类型正确,可以保存序列号

如果您使用的是SQL Server,则可以使用大容量插入来完成此操作,这非常快

然后,执行一条SQL语句,该语句将该临时表的内容用于join或IN子句,以查找数据库中的现有行

例如:

UPDATE yourtable
SET does_exist = 1
WHERE sequence_no IN (SELECT sequence_no FROM staging_table)

按照Lasse所说的,您可以使用从本地数据表直接批量插入SQL Server

按照Lasse所说的,您可以使用从本地数据表直接批量插入SQL Server

您可以生成如下查询:

var numbers = localTable.Rows.Cast<DataRow>()
    .Select(r => r.Field<string>("SequenceNo"))
    .ToArray();

var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})";

var queryText = string.Format(queryTemplate, numbers);
select * from MySQLBDTable where IdentityID in (1,2,3,4,5,6,7,8,9,10)
union
select * from MySQLBDTable where IdentityID in (11,12,13,14,15,16,17,18,19,20)

您可以生成如下查询:

var numbers = localTable.Rows.Cast<DataRow>()
    .Select(r => r.Field<string>("SequenceNo"))
    .ToArray();

var queryTemplate = @"select * from MySQLBDTable where IdentityID in ({0})";

var queryText = string.Format(queryTemplate, numbers);
select * from MySQLBDTable where IdentityID in (1,2,3,4,5,6,7,8,9,10)
union
select * from MySQLBDTable where IdentityID in (11,12,13,14,15,16,17,18,19,20)

好极了谢谢我不确定.NET是否有什么新奇的工具可以在应用程序端实现这一点。临时表听起来很完美,我要实现这个解决方案。太棒了。谢谢我不确定.NET是否有什么新奇的工具可以在应用程序端实现这一点。临时表听起来很完美,我将实现这个解决方案。