1 回答
TA贡献1831条经验 获得超4个赞
这是我为解决我的问题所做的(希望它可以帮助其他尝试做类似事情的人)
似乎 CASE 不能用于决定运行哪个语句,而是似乎只决定将哪些文本放入查询/执行字符串中。因此,我必须四处移动才能做到这一点,使用 CASE 来决定将我的数组设置为等于什么,而不是决定对数组执行什么操作。
UPDATE userdata
SET age = $1,
weight = CASE WHEN date[array_upper(date,1)] = $7 THEN array_replace(weight, weight[array_upper(weight, 1)], $2)
ELSE array_append(weight, $2) END,
deadlift = CASE WHEN date[array_upper(date,1)] = $7 THEN array_replace(deadlift, deadlift[array_upper(deadlift, 1)], $3)
ELSE array_append(deadlift, $3) END,
squat = CASE WHEN date[array_upper(date,1)] = $7 THEN array_replace(squat, squat[array_upper(squat, 1)], $4)
ELSE array_append(squat, $4) END,
bench = CASE WHEN date[array_upper(date,1)] = $7 THEN array_replace(bench, bench[array_upper(bench, 1)], $5)
ELSE array_append(bench, $5) END,
overhead = CASE WHEN date[array_upper(date,1)] = $7 THEN array_replace(overhead, overhead[array_upper(overhead, 1)], $6)
ELSE array_append(overhead, $6) END,
date = CASE WHEN date[array_upper(date,1)] = $7 THEN array_replace(date, date[array_upper(date, 1)], $7)
ELSE array_append(date, $7) END
WHERE email = $8;
- 1 回答
- 0 关注
- 191 浏览
添加回答
举报
