在MySQL中获取最后插入的ID

6

在MySQL中,是否可能通过一个查询来获得多个插入后的所有ID?例如(摘要):

$ids = array();
$parts = array();
$query = 'INSERT INTO `TABLENAME` (`FIELDS`)  VALUES'; 

$items = array(values);
foreach($items as $item){
   $parts[] = '('.$item['key1'].','.$item['key2']...','.$item['keyN'].')';
}

$query .= implode(',',$parts);
mysqli_query($link,$query);
$ids = ... // getting  ALL inserted IDs
var_dump($ids);

它可以在此处执行(其中之一解决方案)。示例(摘要):
$ids = array();

$items = array(values);
foreach($items as $item){
   $query ='INSERT INTO `TABLENAME` (`FIELDS`)  VALUES('.$item['key1'].','.$item['key2']...','.$item['keyN'].')';
   mysqli_query($link,$query);
   $ids[] = mysqli_insert_id($link);
}
var_dump($ids);  

但是,我想要的是:一个查询将所有项目插入 - 一个查询获取所有插入的ID。

更新

我的解决方案(基于问题在MySQL中生成整数序列)。通过单个查询返回最后插入的ID序列。

$query_inserted_ids = "SELECT @row := @row +1 AS row_id
                       FROM TABLENAME , (SELECT @row := LAST_INSERT_ID()-1 )r
                       WHERE @row <(
                       SELECT id
                       FROM  TABLENAME 
                       ORDER BY id DESC
                       LIMIT 1 )";

谢谢关注!


请参见https://dev59.com/dGQn5IYBdhLWcg3w1Z9f。 - Michael Berkowski
1个回答

2
MySQL 的
SELECT LAST_INSERT_ID()

将返回多行插入语句中返回的第一个ID。 如果与

组合使用。
SELECT ROW_COUNT()

你可以使用 LAST_INSERT_ID() 函数开始,然后加上 ROW_COUNT() 指定的记录数量来递增。

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