【问题标题】:Get last inserted IDS in MySQL [duplicate]在 MySQL 中获取最后插入的 IDS [重复]
【发布时间】:2014-01-09 10:55:21
【问题描述】:

是否有可能通过一个查询在 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。

更新

我的解决方案(基于问题generate an integer sequence in 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 )";

感谢关注!

【问题讨论】:

标签: php mysql


【解决方案1】:

MySQL 的

SELECT LAST_INSERT_ID()

将返回从多行插入返回的 FIRST ID。 如果你把它与

SELECT ROW_COUNT()

您可以从LAST_INSERT_ID() 开始,并以ROW_COUNT() 中指定的记录数递增。

【讨论】:

    猜你喜欢
    • 2019-10-23
    • 2011-05-13
    • 2014-01-20
    • 2016-06-05
    • 2011-06-01
    • 2017-10-14
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多