我正在转换一些旧代码以使其更加优化,所以我卡在这里我可以通过触发 2 个存储过程来以旧方式执行此操作,但我在想是否可以通过我尝试的连接但无法正确使用所以任何帮助会很好
我的旧代码和查询
dataset = Select data1,data2,data3 from table where column1='somevalue'
//now consider dataset have the records of the above query then
foreach (row in dataset)
{
Select top 1 tab2data,tab2data from table2 with (nolock) where LtrFileName = row.data1
//Do some more functionality i can handle this part
}
所以我试图通过连接来组合这两个查询,我用左连接得到了正确的结果,但我无法弄清楚top 1
如果将它与连接一起应用它会给出错误的输出。所以基本上我在问有没有办法得到这些两个查询合并为一个存储过程,避免了所有的 foreach 编码部分。
更新 对不起,如果我不清楚,但这是它给出的第一个查询的原始输出
data1 data2 data3 data4
001000 002142 NBIS1N 20130514
001000 002142 NBIS1R 20130514
001000 002142 NBTB1N 20130514
001000 002142 NBTB1R 20130514
这些都是记录
tab2data1 tab2data2 data3 tab2data3
NULL NULL NBIS1N 239
NBIS1R_20100323.pdf 000110-Acct_Rec_Mgmt NBIS1R 349
NBIS1R_20100324.pdf 000110-Acct_Rec_Mgmt NBIS1R 349
NBTB1N_20100323.pdf 000110-Acct_Rec_Mgmt NBTB1N 508
NBTB1N_20100324.pdf 000110-Acct_Rec_Mgmt NBTB1N 508
NULL NULL NBTB1R 1360
现在在执行第二个查询后,我得到的只有四行,如下所示
tab2data1 tab2data2 data3 tab2data3
NULL NULL NBIS1N 239
NBIS1R_20100324.pdf 000110-Acct_Rec_Mgmt NBIS1R 349
NBTB1N_20100324.pdf 000110-Acct_Rec_Mgmt NBTB1N 508
NULL NULL NBTB1R 1360