如果我可以获取最近插入的数据行的ID,我感兴趣。我有一个用户可以填写的表单,他们可以克隆表单,因此他们可以添加10个表单,如果他们想...我只需要插入所有的id。这可能吗?
答案 0 :(得分:1)
您可以使用mysql_affected_rows
mysql函数查找最后一个受影响的行。 Here是文档。
SET @uids := null;
UPDATE footable
SET foo = 'bar'
WHERE fooid > 5
AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) );
SELECT @uids;
这将返回一个字符串,其中包含所有以冒号连接的ID。
答案 1 :(得分:0)
SELECT id FROM [yourTable] ORDER BY id DESC LIMIT 2
答案 2 :(得分:0)
答案 3 :(得分:0)
使用SQL的ORDER-BY
:
SELECT * FROM table ORDER BY id DESC LIMIT 2
答案 4 :(得分: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;
当然,这样的决定取决于您的应用的结构。
答案 5 :(得分:0)
正如AndreiCristianProdan在评论中所述:自动增加ID。然后是:
SELECT * FROM tableName LIMIT 1 ORDER BY ID DESC
在-exactly-同一时间不会有两行。这将始终选择表中的-last-行。
如果您只想要由一个用户影响的行,请向表中添加user_id
字段。然后添加
WHERE `user_id` = 'UserIdHere'
到SQL语句。
希望有所帮助。