我需要在表格中插入最后一行中的ID(一列)。我想知道是否有办法以某种方式将其嵌入到另一个查询中,以避免有两个不同的查询?它似乎更简单,我相信我以前见过它。
这样的事情:
$query = "INSERT INTO a_table (x, y) VALUES ((SELECT id FROM another_table ORDER BY id DESC), 'y...')";
任何想法如何做到这一点? 感谢。
答案 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子句在这里毫无意义。