在我的应用程序中,我想通过gridview中的导入操作显示新添加的RECORDS。在sql中是否有任何方法可以检索新添加的行。
我试图在使用代码时尝试在插入之前和之后获得差异并且它完美地工作但是使应用程序非常慢。所以,我想在数据库本身做。
我正在使用Mysql,ASP.NET。
例如: 表可以在导入操作之前具有这些记录
ID Name
1 A
2 B
3 C
并且导入后表格可能是这样的。
ID Name
1 A
2 B
3 C
4 D
5 E
6 F
我想要像
这样的结果ID Name
4 D
5 E
6 F
答案 0 :(得分:4)
您需要在表格中定义AUTO_INCREMENT列,或者您可以使用TIMESTAMP
字段来检索新添加的记录,请尝试以下操作:
SELECT *
FROM table_name
ORDER BY id DESC
LIMIT 10;
对于单行插入,您可以在INSERT
查询后使用LAST_INSERT_ID:
SELECT LAST_INSERT_ID();
对于多行插入,您可以按照以下步骤操作:
START TRANSACTION;
SELECT MAX(id) INTO @var_max_id FROM table_name;
INSERT INTO table_name VALUES(..),(..),...;
SELECT MAX(id) INTO @var_max_id_new FROM table_name;
COMMIT;
SELECT *
FROM table_name
WHERE id BETWEEN (@var_max_id + 1) AND @var_max_id_new;
答案 1 :(得分:0)
如果您为记录使用自动增量ID,则可以使用:
SELECT * FROM [table] ORDER BY [id column] DESC LIMIT [number of records]
否则,您应该为此目的将TIMESTAMP列添加到记录中,并按此列选择。
就个人而言,如果有选项,我不会为此使用记录ID,因为它不是它们的用途。记录ID可以在应用程序的整个生命周期中更改,并且它们不一定代表项目的添加顺序。特别是在数据导入/导出方案中。我更喜欢创建特殊的列来存储这些信息,例如“CreatedAt”,“ModifiedAt”。
答案 2 :(得分:0)
我认为这会更简单:
SELECT MAX(id) INTO @Max_table_Id FROM table;
// Insert operation here//////
SELECT * FROM table WHERE id>@Max_table_Id;