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

时间:2016-04-17 09:42:28

标签: c# sql db2

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

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

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

在我的例子中,我应该为键e4,e2,e3返回“A”,为键e4,e5,e6返回“***”

我通过使用临时表使其工作,我使用游标读取主表时插入正确的行。但它很慢,很慢。

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

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

你的意思是

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

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

编辑: 仅当'***'是最小值或最大可能值

时才有效

答案 1 :(得分:0)

您可以这样做:

Whoops, looks like something went wrong.

1/1
FatalErrorException in bd4dbbba0de3e338e8b6884bcb514092774bce38.php line 21:
Class 'HTML' not found
in bd4dbbba0de3e338e8b6884bcb514092774bce38.php line 21

也就是说,你订购它的价值相当于' ***'被推到底部,应用过滤,然后选择第一行。