我正在開發一個使用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,因此打印記錄。
我正在開發一個使用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,因此打印記錄。
猜測你正在使用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
如果我只想在相同條件下使用id,該怎麼辦? – Freelancer
檢查我編輯的答案 – Yaroslav
SELECT ID,MIN(REMFEE) FROM payment WHERE ID NOT IN (SELECT ID FROM payment WHERE REMFEE = 0) GROUP BY ID
如果我只想打印ID,該怎麼辦? – Freelancer
Select
id, Min(RemFee)
from payment
where RemFee > 0
group by id
在SQL表中沒有固有的順序,您應該使用列來存儲順序,以便知道這是您最後一次插入的行。至於你有什麼我們應該知道最後插入的行有一個1或2的Id。此外,你使用的是什麼樣的RDBMS,MS SQL Server,Oracle,MySQL? – Yaroslav
這會失敗,您需要添加至少一列,以指出每個ID的最新記錄。 –
@freelancer你最後一張唱片是什麼意思?最後一個插入?你如何在這個表結構中維護插入順序? –