首页 > 解决方案 > MySQL 用预先填充数据的表中的数据填充多个未使用的行

问题描述

我有一个表,其中包含与此类似的预填充数据:

ID 礼品码 用户身份
1 AGiftCode 42342
2 另一个代码 无效的
3 另一个 无效的
4 代码 无效的
5 代码2 无效的
6 代码3 无效的

在某些时候,多个用户同时分配给预填充的数据,我目前正在多次使用以下查询来实现这一点:

UPDATE table SET userId = "xxxxx" WHERE userId is NULL LIMIT 1

有没有办法做同样的事情,但使用单个 UPDATE 语句将 x 个 userId 插入下一个 x 个打开行?

只有要插入的 userId 和要插入的 userId 的数量在更新时是已知的。

标签: mysqldatabase

解决方案


一种方法使用SELECT ... FOR UPDATE

SELECT giftCode FROM yourTable WHERE userId IS NULL LIMIT 1 FOR UPDATE;
UPDATE yourTable SET userId = 'xxxxx' WHERE giftCode = 'code from above';

推荐阅读