Mysql获取特定表的最后一个ID

Posted

技术标签:

【中文标题】Mysql获取特定表的最后一个ID【英文标题】:Mysql get last id of specific table 【发布时间】:2012-12-24 16:33:30 【问题描述】:

我必须从特定插入的表中获取最后一个插入 id?。 假设我有这个代码:

INSERT INTO blahblah (test1, test 2) VALUES ('test1', 'test2');
INSERT INTO blahblah2 (test1, test 2) VALUES ('test1', 'test2');
INSERT INTO blahblah3 (test1, test 2, lastid) VALUES ('test1', 'test2', last id of blahblah);

如何在表 blahblah3 中获取表 blahblah 的插入 ID? LAST_INSERT_ID() 只给你最后的插入 id

问候,西蒙 :)

【问题讨论】:

在您的示例中,只需切换 INSERT INTO blahblah2INSERT INTO blahblah3 行就可以了。 我不能在我的编码中这样做,sry :/ 【参考方案1】:

您可以使用LAST_INSERT_ID() 函数。 试试这个:

INSERT INTO blahblah (test1, test2) VALUES ('test1', 'test2');

SELECT LAST_INSERT_ID() INTO @blahblah;

INSERT INTO blahblah2 (test1, test2) VALUES ('test1', 'test2');

INSERT INTO blahblah3 (test1, test2, lastid) VALUES ('test1', 'test2', @blahblah);

【讨论】:

【参考方案2】:

这是你要找的吗?

SELECT id FROM blahblah ORDER BY id DESC LIMIT 1

【讨论】:

【参考方案3】:

如果您想在单个语句中执行此操作,请使用:

INSERT INTO blahblah3 (test1, test2, lastid)
VALUES ('test1', 'test2', (select MAX(id) FROM blahblah));

这样您就无需事先保存任何变量,从而确保您在该时刻获得最新的 ID。

【讨论】:

我以这种方式尝试了您的示例,但它不起作用: $mysqli->query("INSERT INTO products SET product_title='test'"); $mysqli->query("INSERT INTO tags SET tag_values='test'"); $mysqli->query("INSERT INTO iamges (images_path, product_id) VALUES ('blah', SELECT MAX(product_id) FROM products)'"); 您忘记了选择周围的括号,这很重要。使用$mysqli->query("INSERT INTO iamges (images_path, product_id) VALUES ('blah', (SELECT MAX(product_id) FROM products))");。最后你写了[...] products)'");,我觉得应该是[...] products)");(去掉')。 很抱歉把这个备份出来,但是你能告诉我应该输出什么吗?我有MAX(ID),在 phpMyAdmin 中它会显示所需的结果(2),但我无法在脚本中得到它。你能给出一些代码来展示我如何打印结果(2)吗?非常感谢:) @Mattios550 你能说得更具体点吗?为什么要打印结果?此代码用于插入 :) 如果这是脚本语言的问题,您应该考虑在特定语言的部分中询问它。 @flu 我的目标是简单地获取列中最大的条目 - 在本例中为“id” - 显然,这些是顺序的。我知道还有其他方法,但我想使用MAX(ID) 获取最高ID,然后在$idMAX(ID) 时使用SELECT... WHERE id='$id' 获取表中的最新条目。抱歉,如果这令人困惑并感谢您的回复:)【参考方案4】:

您可以使用mysql_insert_id();函数快速获得答案。

但如果您使用的是流量较大的网站,则存在准确结果的可能性。

【讨论】:

【参考方案5】:

你可以使用LAST_INSERT_ID()函数。

INSERT INTO blahblah (test1, test 2) VALUES ('test1', 'test2');
    //this query will return id. Save it in one variable

 select LAST_INSERT_ID()

简而言之,将最后一个插入id保存在一个变量中,然后在blahblah3中使用

【讨论】:

我该怎么做?我对此表示怀疑:/ 我试图准确地告诉您 Saharsh Shah 在他的回答中提到的内容。唯一的区别是他以更好的方式提出了他的答案。【参考方案6】:

你也可以在codeigniter As中通过查询找到last id

$this->db->order_by('column name',"desc");
   $this->db->limit(1);
 $id=  $this->db->get('table name');

【讨论】:

以上是关于Mysql获取特定表的最后一个ID的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中获取 MySQL 表的最后插入 ID?

使用 SQLite 获取存在特定 ID 值的所有表的列表

MySQL内连接获取连接表的最后一项

在codeigniter中多次进入mysql时获取最后插入的'Id'

之前:获取最后插入的 id - mysql 现在:我们应该在哪里调用最后插入的 id?

MYSQL中获取得最后一条记录的语句