MySQL:检索最新插入的数据

时间:2012-02-07 13:16:58

标签: mysql

在将新数据插入表格之后,我需要直接选择一些新数据,因此我可以将其用于插入另一个表格。

我能想到这样做的唯一方法是使用我的行中的'datetime'字段,但是如何检索插入的最新日期/时间。

  1. INSERT声明NOW()

  2. {/ 1}}
  3. datetime

  4. 希望这是有道理的。谢谢

5 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。

为什么不为此使用触发器?

当触发器创建记录时,您可以获取插入记录的ID。然后,您可以执行选择并将新值插入相关表中。

MYSQL在使用触发器方面拥有大量资源。

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

或者您可以获取受影响的行数,然后使用它来在select语句中获取所需的结果集。

获取最后插入的ID?

如果您一次向数据库中插入一行,那么您将能够从MYSQL获取最后一个插入的ID。这将是您上次插入数据库的记录的主键值。

你基本上会在mysql中做这样的事情:

SET @inserted_id = LAST_INSERT_ID();

或者在PHP中,您可以使用以下功能:

mysql_insert_id(&mysql);

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

答案 1 :(得分:0)

按日期时间降序对结果进行排序,然后选择第一个结果。

society_select = SELECT socID, creator, datetime FROM societies.society ORDER BY datetime DESC LIMIT 1;

答案 2 :(得分:0)

您可以使用自动增量字段。插入数据后,您可以从表中检索列表插入的ID。并使用该ID获取最新记录。

答案 3 :(得分:0)

建议的触发器是一个选项。如果你出于某种原因不想使用它,你可以:

  • 添加一个整数主键,其中auto_increment为ID,并将其排序为DESC(例如INT(11))
  • 按时间戳列降序排序(当前有索引)

答案 4 :(得分:0)

插入数据后使用trigger。这肯定是更清洁的方式。

另一个选择是使用像mysql_insert_id这样的方法。假设你使用PHP。当然也有其他语言的等效方法。

排序不是一个选项(如果没有在事务中智能包装) - 如果你在表上有多次写入和读取,这可能会非常难看。