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 blahblah2
和 INSERT 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,然后在$id
为MAX(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的主要内容,如果未能解决你的问题,请参考以下文章
在codeigniter中多次进入mysql时获取最后插入的'Id'