从MySQL表中选择一行或多行,然后更新每一行中的列

问题描述

我有一张桌子,上面有预先存在的赠品代码,我需要选择一个或多个行,然后用个人识别码,客户代码和“保留”状态更新每行的三列。这样可以保留每一行,直到收到我们客户的API的响应为止。

表格如下:

code               identification    customer_code    status
-----------------------------------------------------------------
81Ow3tCs1nNwxKu    --                --               available
I1NdH9F22S7RhU3    --                --               available
Xc942LWe8Z6nt8x    --                --               available
zcLMRO8kSeM7S06    --                --               available
K94erORvzSsU0ik    --                --               available

对此进行了尝试,但出现了错误:

UPDATE promo_codes 
SET 
    identification='12345',customer_code='67890',status='reserved' 
FROM 
(SELECT code FROM promo_codes WHERE status='available' LIMIT 2);

然后我尝试了REPLACE INTO,但也出现了错误:

REPLACE INTO promo_codes(identification,customer_code,status)
VALUES('12345','67890','reserved')
WHERE
(SELECT code FROM promo_codes WHERE status='available' LIMIT 2);

我不知道该怎么办。有人可以给我一个主意吗? 非常感谢您的帮助。

解决方法

稍加重写即可编写代码

您应该考虑添加ORDER BY RAND(),因为没有订单的LIMIT毫无意义

CREATE TABLE promo_codes  (
  `code` VARCHAR(15),`identification` VARCHAR(20),`customer_code` VARCHAR(20),`status` VARCHAR(9)
);

INSERT INTO promo_codes 
  (`code`,`identification`,`customer_code`,`status`)
VALUES
  ('81Ow3tCs1nNwxKu','--','available'),('I1NdH9F22S7RhU3',('Xc942LWe8Z6nt8x',('zcLMRO8kSeM7S06',('K94erORvzSsU0ik','available');
UPDATE promo_codes 
SET 
    identification='12345',customer_code='67890',status='reserved' 
WHERE status='available' LIMIT 2;
SELECT * FROM promo_codes
code            | identification | customer_code | status   
:-------------- | :------------- | :------------ | :--------
81Ow3tCs1nNwxKu | 12345          | 67890         | reserved 
I1NdH9F22S7RhU3 | 12345          | 67890         | reserved 
Xc942LWe8Z6nt8x | --             | --            | available
zcLMRO8kSeM7S06 | --             | --            | available
K94erORvzSsU0ik | --             | --            | available

db 提琴here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...