gpt4 book ai didi

mysql - IF EXISTS MySQL 语法错误,但每一行单独工作

转载 作者:行者123 更新时间:2023-11-30 00:33:17 24 4
gpt4 key购买 nike

我有一个包含几千个促销代码的数据库,我需要实现一些东西,当工作人员去获取 ID 时,它会检查他们的 ID 是否已分配给促销代码,如果已分配给促销代码,则会返回它如果 ID 不在系统中,则会返回队列中的下一个促销代码。我现在的这段代码可以单独工作,但不能作为整体工作。我觉得这是一个简单的错误,但我需要第二双眼睛来观察它

如果存在(从促销中选择促销代码,其中worker_id='ABC123')
从促销中选择促销代码,其中worker_id='ABC123'
别的
插入 Promo(worker_id) 值('ABC123')
其中 Id=count(worker_id)+1

示例数据

Idworker_idpromo_code
0ABC123 1234567890
1 1928374657
2 9184373462

因此,如果传递了 ABC123,它将返回 1234567890,但如果我传递了 DEF456,它会看到 DEF456 不在表中,将其插入表中的 Id=1

最佳答案

您似乎正在寻找更新,而不是插入。您可以按以下方式进行更新:

update table t
set worker_id = 'ABC123'
where not exists (select * from (select 1 from table t2 where worker_id = 'ABC123') t) and
worker_id is null
order by id
limit 1;

然后返回你想要的值为:

select promo_code
from table t
where worker_id = 'ABC123';

更新中,不存在本质上是说“如果worker id已在表中,则不要执行任何操作”。双子查询是为了解决 MySQL 的一个怪癖。我还建议在 worker_id 上使用唯一索引,因为您似乎不希望表中出现重复项:

create unique index table(worker_id);

记录更新后,您可以使用select获取值。

关于mysql - IF EXISTS MySQL 语法错误,但每一行单独工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22362677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com