【发布时间】:2020-04-28 00:10:02
【问题描述】:
我有一个包含这些列的表格
-
proxy_id(主键) -
proxy(代理IP) -
current_requests(代理自last_cool_down以来处理的当前请求数) -
total_requests(此代理在其生命周期内完成的请求数) -
last_used(上次使用此代理的日期时间) -
last_cool_down(此代理上次冷却的日期时间)
使用代理后,我运行此命令(显然是当前日期和时间,但我们假设当前日期时间为2020-04-28 13:10:03)
UPDATE proxy_table
SET
current_requests = current_requests + 1,
total_requests = total_requests + 1,
last_used = '2020-04-28 13:10:03',
last_cool_down = '2020-04-28 13:10:03'
WHERE proxy_id = 1
我的问题是无论如何我都必须更新current_requests 和last_used。但是,在上面的代码中,它没有考虑这种情况。如果current_requests + 1 == 20,则current_requests = 0 和last_cool_down = '2020-04-28 13:10:03'。我该怎么做?
基本上是这样的
UPDATE proxy_table
if (current_requests + 1 == 20) {
SET current_requests = 0;
SET last_cool_down = '2020-04-28 13:10:03';
else {
SET current_requests = current_requests + 1;
}
SET total_requests = total_requests + 1;
SET last_used = '2020-04-28 13:10:03';
WHERE proxy_id = 1;
我想在一个 sql 语句中执行此操作,而不是运行 2 个语句。我的尝试没有成功:
UPDATE proxy_table
SET
CASE
WHEN current_requests + 1 = 20
THEN current_requests = 0, last_cool_down = '2020-04-28 13:10:03'
ELSE current_requests = current_requests + 1
total_requests = total_requests + 1,
last_used = '2020-04-28 13:10:03'
WHERE
proxy_id = 1
【问题讨论】:
-
使用
case声明。 -
@zealous 我试过了(编辑了我的答案)但我无法得到它
标签: mysql sql database if-statement sql-update