mysql - 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 的数量在更新时是已知的。
解决方案
一种方法使用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';
推荐阅读
- javascript - three.js 文件错误,找不到名称'define',类型'typeof 上不存在属性'THREE'。类型“{}”.etc 上不存在属性“set”
- java - 搜索查询中的 Java FX 图像显示
- swift - 如何在xcode中使用搜索栏维护tableviewcell内切换按钮的状态
- spring - Java Spring MongoDB 自定义过滤器忽略 Null 参数
- python - 按星期几分组和熊猫中的另一列
- spring - 如何使用 MockMvc 测试返回可分页结果的 SpringMvc 控制器?
- javascript - How to customized default date function output in JavaScript?
- python - 从负数开始的负数范围内未出现在列表中
- spring-boot - Spring REST Controller 应该 PUT JSON 然后重定向到指定页面
- reactjs - 为什么我在 React JS 中使用 POST 方法获取请求时出现错误 415