从select查询中获取第二个值到另一个

本文关键字:另一个 第二个 获取 select 查询 | 更新日期: 2023-09-27 18:08:29

我有简单的sql查询:

SELECT val FROM ExampleTable WHERE id in (1,2,3)

获取val值,我使用

using(SqlCommand cmd = new SqlCommand(query,conn))
{
     var tmp = Convert.ToInt32(cmd.ExecuteScalar());
}

问题是,这个查询返回(当然)不止一行。我需要这个值作为另一个sql查询的参数,如下所示:

SELECT val2 FROM ExampleTable2 WHERE val = @val
using(SqlCommand cmd2 = new SqlCommand(query2,conn))
{
    cmd2.Parameters.AddWithValue("@val",tmp);
    var tmp2 = Convert.ToInt32(cmd2.ExecuteScalar());
}

只获取tmp的第一个值。我想检查所有这些,我的意思是,如果第二个查询返回null,它需要tmp的下一个值作为参数。

当第一个查询返回多于一行时,第二个查询可能返回null。这是一个问题,因为我在另一个sql查询中使用tmp2值。有什么想法吗?

从select查询中获取第二个值到另一个

你可能可以按照你建议的方式来做,但用SQL编写查询并执行它会简单得多。

的组合
SELECT val FROM ExampleTable WHERE id in (SELECT val2 FROM ExampleTable2 WHERE val = @val)

我不太清楚你在做什么,但大概是这样的。

这种方法将在服务器上执行所有操作,而不是将数据拖回来,从而提高性能&等等。根据您的DB和连接设置,它也更可能是正确的,因为它可以作为数据的一致快照运行,而不是两个独立的调用。

相关文章: