如何解决从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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。