我有一个这样的列表:
| slope | lower_limit | upper_limit | limit |
|-------|-------------|-------------|-------|
| -0.5 | 23 | 25 | 0 |
| 0.6 | 23 | 25 | 0 |
| 0.7 | 23 | 25 | 0 |
我想根据斜率列的符号,从下限和上限列更新限制列的值。我希望结果表看起来像这样:
| slope | lower_limit | upper_limit | limit |
|-------|-------------|-------------|-------|
| -0.5 | 23 | 25 | 23 |
| 0.6 | 23 | 25 | 25 |
| 0.7 | 23 | 25 | 25 |
我当前使用的是if,但是它会更改整个列的值,导致limit列中的所有值均为25
答案 0 :(得分:4)
我认为您可以尝试在更新中使用CASE WHEN
。
CREATE TABLE T(
slope FLOAT,
lower_limit INT,
upper_limit INT,
limit INT
);
INSERT INTO T VALUES (-0.5,23,25,0);
INSERT INTO T VALUES (0.6,23,25,0);
INSERT INTO T VALUES (0.7,23,25,0);
UPDATE T
SET limit = CASE WHEN slope > 0 THEN upper_limit
ELSE lower_limit END
查询1 :
select * from t
Results :
| slope | lower_limit | upper_limit | limit |
|-------|-------------|-------------|-------|
| -0.5 | 23 | 25 | 23 |
| 0.6 | 23 | 25 | 25 |
| 0.7 | 23 | 25 | 25 |