[英]How to get the newly added records
在我的应用程序中,我想通过网格视图中的导入操作显示新添加的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
您需要在表上定义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;
如果您使用自动增量ID作为记录,则可以使用:
SELECT * FROM [table] ORDER BY [id column] DESC LIMIT [number of records]
否则,您应该为此在记录中添加一个TIMESTAMP列,并按此列进行选择。
就个人而言,如果有一个选项,我将不会为此使用记录ID,因为这不是它们的用途。 记录ID可能会在应用程序的整个生命周期内发生变化,并且不一定代表添加项目的顺序。 特别是在数据导入/导出方案中。 我希望创建特殊的列来存储此类信息,例如“ CreatedAt”,“ ModifiedAt”。
我认为这会更简单:
SELECT MAX(id) INTO @Max_table_Id FROM table;
// Insert operation here//////
SELECT * FROM table WHERE id>@Max_table_Id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.