MySQL获取特定表的最后一个ID。

15

我需要从特定插入的表中获取最后插入的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。

问候,Simon :)


在你的例子中,只需交换 INSERT INTO blahblah2INSERT INTO blahblah3 行即可解决问题。 - VolkerK
抱歉,我的编程无法做到那个,:/ - simon
6个回答

15
您可以使用 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);

14

这是您正在寻找的内容吗?

SELECT id FROM blahblah ORDER BY id DESC LIMIT 1

9

如果您想在一条语句中完成此操作,请使用以下命令:

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

通过这种方式,您无需在此之前保存任何变量,从而确保您将在此时刻获得最新的ID。

1
抱歉再次提出这个问题,但你能告诉我应该输出什么吗?我有一个 MAX(ID),在 PHPMyAdmin 中它会带出所需的结果(2),但我无法在脚本中得到这个结果。你能给一些代码来展示如何打印结果(2)吗?非常感谢 :) - Mattios550
@Mattios550 你能具体说明一下吗?为什么你想要打印结果呢?这段代码是用于插入的 :) 如果这是关于脚本语言的问题,你应该考虑在那个特定语言的部分提问。 - flu
@flu 我的目标是简单地获取一列中最大的条目 - 在这种情况下,是 'id' - 显然,这些是连续的。我知道还有其他方法,但我想使用 MAX(ID) 来获取最高的ID,然后在 $idMAX(ID) 时使用 SELECT... WHERE id='$id' 来获取表中最新的条目。如果这让您感到困惑,请谅解,并感谢您的回复 :) - Mattios550
如果我理解正确的话,你正在寻找 SELECT * FROM blahblah WHERE ID=(SELECT MAX(id) FROM blahblah) - flu
@Mattios550 不用谢!如果我的回答有帮助,请给我投票;-) - flu
显示剩余4条评论

2

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

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


1

您可以使用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中使用它。

我该怎么做?我有疑问 :/ - simon
我试图告诉你的正是Saharsh Shah在他的回答中提到的内容,唯一的区别在于他用更好的方式呈现了他的答案。 - Bhavik Shah

0

你也可以在CodeIgniter中通过查询找到最后一个ID,如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接