从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
值。有什么想法吗?
你可能可以按照你建议的方式来做,但用SQL编写查询并执行它会简单得多。
的组合SELECT val FROM ExampleTable WHERE id in (SELECT val2 FROM ExampleTable2 WHERE val = @val)
我不太清楚你在做什么,但大概是这样的。
这种方法将在服务器上执行所有操作,而不是将数据拖回来,从而提高性能&等等。根据您的DB和连接设置,它也更可能是正确的,因为它可以作为数据的一致快照运行,而不是两个独立的调用。