我在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,但没有成功。
感谢您的帮助
答案 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
也就是说,你订购它的价值相当于' ***'被推到底部,应用过滤,然后选择第一行。