C# 从表中选择最后一条记录

C# 从表中选择最后一条记录,c#,sql,database,oledb,C#,Sql,Database,Oledb,我正在开发一个使用oledb连接的c#应用程序 我的桌子在后面 付款 Id RemFee 1 2000 2 2500 1 1500 3 8000 3 5000 2 500 3 0 我只想选择并检查每个Id的最后一条记录,并将Remfee与0进行比较。如果大于0,则打印记录。i、 e.我的预期结果是: Id 1 2 在本次检查中,使用RemFee 1500对Id 1进行检查(因为它是使用Id1的最后一条记

我正在开发一个使用oledb连接的c#应用程序

我的桌子在后面

付款

Id   RemFee
1     2000
2     2500
1     1500
3     8000
3     5000
2      500
3        0
我只想选择并检查每个Id的最后一条记录,并将Remfee与0进行比较。如果大于0,则打印记录。i、 e.我的预期结果是:

Id  
1    
2     

在本次检查中,使用RemFee 1500对Id 1进行检查(因为它是使用Id1的最后一条记录)。它大于0,因此将打印记录。

猜测您正在使用MSQ SQL Server,并且没有行知道哪一行是您最后插入的行。请尝试以下代码:

SELECT ID,MIN(REMFEE) FROM payment WHERE ID NOT IN (SELECT ID FROM  payment  WHERE REMFEE  = 0) GROUP BY ID
SELECT Id, Min(RemFee) AS RemFee
  FROM payment
 WHERE RemFee > 0
 GROUP BY ID
这是一个代码示例

编辑

如果您只需要ID字段,这里有一个选项,以及

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

猜测您正在使用MSQ SQL Server,并且没有行知道哪一行是您最后插入的行。请尝试以下代码:

SELECT Id, Min(RemFee) AS RemFee
  FROM payment
 WHERE RemFee > 0
 GROUP BY ID
这是一个代码示例

编辑

如果您只需要ID字段,这里有一个选项,以及

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

SQL表中没有固有的顺序,您应该使用列来存储顺序,以便知道最后插入的行是哪一行。至于您有什么,我们应该如何知道最后插入的行的
Id
为1或2。另外,您使用的是哪种RDBMS、MS SQL Server、Oracle、MySQL?这会有点失败,您需要至少添加一列,指出每个ID的最新记录。@freeloper上一条记录是什么意思?插入最后一个?如何在该表结构中保持插入顺序?每个id的最后一条记录,即。最后一条Id为1的记录是1500,Id为2的记录是500,所以只要看一下屏幕上的表格就很容易说出来。但是sql引擎不是这样运行的。它不会根据顺序区分这些记录在SQL表中没有固有的顺序,您应该使用列来存储顺序,以便知道最后插入的行是哪一行。至于您有什么,我们应该如何知道最后插入的行的
Id
为1或2。另外,您使用的是哪种RDBMS、MS SQL Server、Oracle、MySQL?这会有点失败,您需要至少添加一列,指出每个ID的最新记录。@freeloper上一条记录是什么意思?插入最后一个?如何在该表结构中保持插入顺序?每个id的最后一条记录,即。最后一条Id为1的记录是1500,Id为2的记录是500,所以只要看一下屏幕上的表格就很容易说出来。但是sql引擎不是这样运行的。它不按顺序区分这些记录如果我只想打印id怎么办?如果我只想打印id怎么办?如果我只想打印相同条件下的id怎么办?如果我只想打印相同条件下的id怎么办?