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