[英]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.