如果我能获得最近插入的数据行的 ID,我很感兴趣。我有一个用户可以填写的表格,他们可以克隆表格,所以如果他们愿意,他们可以添加 10 个表格......我只需要插入的所有 id。那么这可能吗?
问问题
88 次
6 回答
1
您可以使用mysql_affected_rows
mysql 函数查找最后受影响的行。这是文档。
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
于 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 回答