PHP& Mysqli - 多个查询合二为一?

时间:2010-11-09 17:32:19

标签: php mysqli

我需要在表格中插入最后一行中的ID(一列)。我想知道是否有办法以某种方式将其嵌入到另一个查询中,以避免有两个不同的查询?它似乎更简单,我相信我以前见过它。

这样的事情:

$query = "INSERT INTO a_table (x, y) VALUES ((SELECT id FROM another_table ORDER BY id DESC), 'y...')";

任何想法如何做到这一点? 感谢。

3 个答案:

答案 0 :(得分:1)

如果您希望获得脚本创建的最新记录,那么首先应该不要这样做。如果您的脚本的另一个实例同时创建了一条记录,该怎么办?

mySQL的LAST_INSERT_ID()将返回通过此特定连接创建的最后一个ID。但是,您必须在插入语句后立即调用它。

如果获得最高ID的字面意思是你想要的,那么GSto的答案对你有用。

答案 1 :(得分:1)

INSERT INTO a_table (x, y) VALUES (SELECT max(id), 'y...' FROM another_table);

答案 2 :(得分:0)

是的,MySQL有一个INSERT .. SELECT语句:

示例:

INSERT INTO a_table(x,y)SELECT id,'y'FROM another_table ORDER BY id DESC

尽管请记住,除非你有一个auto_incrementing ID字段,order by子句在这里毫无意义。