2012-10-22 83 views
0

我正在開發一個使用oledb連接的c#應用程序。從表中選擇最後一條記錄

我的表如下

支付

Id RemFee 
1  2000 
2  2500 
1  1500 
3  8000 
3  5000 
2  500 
3  0 

我想選擇和只檢查每個ID的最後一個記錄和比較Remfee到0。如果大於0,則打印記錄。即我的預期結果是:

Id 
1  
2  

在這種檢查是用於標識1 RemFee 1500發(因爲它的ID1最後一條記錄)。它大於0,因此打印記錄。

+1

在SQL表中沒有固有的順序,您應該使用列來存儲順序,以便知道這是您最後一次插入的行。至於你有什麼我們應該知道最後插入的行有一個1或2的Id。此外,你使用的是什麼樣的RDBMS,MS SQL Server,Oracle,MySQL? – Yaroslav

+0

這會失敗,您需要添加至少一列,以指出每個ID的最新記錄。 –

+0

@freelancer你最後一張唱片是什麼意思?最後一個插入?你如何在這個表結構中維護插入順序? –

回答

2

猜測你正在使用MSQ SQL Server和沒有行知道至極是你的最後插入的行。試試這個代碼:

SELECT Id, Min(RemFee) AS RemFee 
    FROM payment 
WHERE RemFee > 0 
GROUP BY ID 

這裏是一個SQL Fiddle working代碼示例

編輯

如果你只是想在這裏的ID字段是一個選項,連同SQL Fiddle code

SELECT myTable.Id 
    FROM (SELECT Id as ID, Min(RemFee) AS Remfee 
      FROM payment 
     WHERE RemFee > 0 
     GROUP BY ID 
     ) myTable 
+0

如果我只想在相同條件下使用id,該怎麼辦? – Freelancer

+0

檢查我編輯的答案 – Yaroslav

1
SELECT ID,MIN(REMFEE) FROM payment WHERE ID NOT IN (SELECT ID FROM payment WHERE REMFEE = 0) GROUP BY ID 
+0

如果我只想打印ID,該怎麼辦? – Freelancer

0
Select 
    id, Min(RemFee) 
from payment 
where RemFee > 0 
group by id 
相關問題