簡體   English   中英

如何在不使用游標的情況下從數據庫中檢索一條特定記錄?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM