繁体   English   中英

如何在不使用游标的情况下从数据库中检索一条特定记录?

[英]How to retrieve one particular record from a database without using cursors?

我的DB2数据库的表中有以下记录:

num    f1     f2     f3
------------------------
***    e1     e2     e3
A      e1     e2     e3
***    e4     e5     e6

每行的“键”(不是主要键)由字段f1,f2和f3组合而成。 我必须遵循此规则获取行:如果对于一个键,有多行,则必须选择字段“ num”不包含值“ ***”的行。 否则,如果键是唯一的,则必须选择该行。

在我的示例中,我应该为密钥e1,e2,e3返回“ A”,为密钥e4,e5,e6返回“ ***”

我通过使用临时表使其工作,在其中使用光标读取主表的同时插入了正确的行。 但这很慢,非常慢。

有没有办法只使用一个SQL查询来获取正确的记录,还是使用C#程序(我的应用使用的语言)? 我尝试使用Datatables和LINQ,但没有成功。

谢谢你的帮助

你只是说像

SELECT MIN(num), f1, f2, f3 from myTable
group by f1, f2, f3

我不确定MIN,也许不是MAX,我手边没有DB2来检查“ A”和“ *”的顺序

编辑:仅当“ ***”为最小或最大可能值时,此方法才有效

您可以执行以下操作:

SELECT TOP 1 * FROM 
myTable
ORDER BY CASE WHEN num = '***' THEN 1 ELSE 0 END    
WHERE f1 = something
AND f2 = something
AND f3 = something

也就是说,您对它进行排序,以便将等于“ ***”的值推到底部,应用过滤,然后选择第一行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM