0

如果我能获得最近插入的数据行的 ID,我很感兴趣。我有一个用户可以填写的表格,他们可以克隆表格,所以如果他们愿意,他们可以添加 10 个表格......我只需要插入的所有 id。那么这可能吗?

4

6 回答 6

1

您可以使用mysql_affected_rowsmysql 函数查找最后受影响的行。是文档。

SET @uids := null;
UPDATE footable
   SET foo = 'bar'
 WHERE fooid > 5
   AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) );
SELECT @uids;

这将返回一个字符串,其中所有 ID 用冒号连接。

于 2012-08-10T13:55:58.690 回答
0

SQL 太琐碎了ORDER-BY

SELECT * FROM table ORDER BY id DESC LIMIT 2 
于 2012-08-10T13:53:32.327 回答
0

从简单的意义上说是不可能的;但是如果您需要这些 id,您可以更改您的逻辑以一次插入一个。

或者,您可以做一个近似值(合理程度取决于您的应用程序),但在插入之前选择 MAX(id),然后做一个select ... WHERE id > $prev_max AND name IN (implode(',', $names))(假设有一些字段,例如您可以像这样使用的名称。

您可以通过确保计数与插入的行数相同来验证所选行的有效性。使用两个因素(id > prev类似名称列),当您像这样选择时,您极不可能获得其他人的插入。

您还可以考虑将行归因于用户,这将消除任何数据冲突的可能性,然后方法非常简单:

SELECT * FROM my_table WHERE user_id = $userID ORDER BY id DESC LIMIT $qtyForms;

当然,这样的决定取决于您的应用程序的结构。

于 2012-08-10T13:54:47.847 回答
0
SELECT id FROM [yourTable] ORDER BY id DESC LIMIT 2
于 2012-08-10T13:52:38.147 回答
0

试试这个:

http://php.net/manual/en/function.mysql-insert-id.php

于 2012-08-10T13:53:08.610 回答
0

正如 AndreiCristianProdan 在评论中所说:自动增加 ID。然后是这样的:

SELECT * FROM tableName LIMIT 1 ORDER BY ID DESC

永远不会有两行在-完全-同时受到影响。这将始终选择表中的最后一行。

如果您想要 - 仅 - 由一个用户影响的行,user_id请向表中添加一个字段。然后加

WHERE `user_id` = 'UserIdHere'

到 SQL 语句。

希望有帮助。

于 2012-08-10T14:06:31.783 回答