0

一个查询插入多行:

$My query = "INSERT INTO exp_channel_titles(channel_id,author_id,ip_address) VALUES(11,1,'203.109.119.2'),(11,1,'203.109.119.2'),(11,1,'203.109.119.2')";

我想要的是 :

自动递增 id 的数组。

我正在使用什么SELECT LAST_INSERT_ID()

我只得到一个 id。我应该怎么做才能得到最后插入字段的所有自动递增值的数组。

PS:我不能触发多个插入查询。

4

2 回答 2

2

如果您在最新版本的 MySQL 上使用 InnoDB,则可以使用 LAST_INSERT_ID() 和 ROW_COUNT() 获取 ID 列表。

InnoDB 在进行批量插入时保证 AUTO INCREMENT 的序号,前提是 innodb_autoinc_lock_mode 设置为 0(传统)或 1(连续)。因此,您可以从 LAST_INSERT_ID() 获得第一个 ID,并通过添加 ROW_COUNT()-1 获得最后一个 ID。

于 2014-05-14T11:57:13.630 回答
1

这将获取按 ID 递减排序的最后 X 条记录。如果您的 ID 是自动递增的,那么这些将是最新插入的值。

SELECT * FROM exp_channel_titles
ORDER BY id DESC
LIMIT X
于 2014-05-14T11:58:42.677 回答