如何在不使用游标的情况下从数据库中检索特定记录
本文关键字:数据库 检索 记录 情况下 游标 | 更新日期: 2024-09-26 00:56:49
我在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"answers"*"的排序
编辑:只有当"***"是最小或最大的值时,这才有效
您可以这样做:
SELECT TOP 1 * FROM
myTable
ORDER BY CASE WHEN num = '***' THEN 1 ELSE 0 END
WHERE f1 = something
AND f2 = something
AND f3 = something
也就是说,您对其进行排序,使等于"***"的值被推到底部,应用筛选,然后选择第一行。