我正在开发一个使用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你最后一张唱片是什么意思?最后一个插入?你如何在这个表结构中维护插入顺序? –