我有一张表A,其中包含值
NAME AGE
Loga 18
Anitha 20
Saranya 13
我正在测试表值,如果条件使用case语句情况,当AGE> = 18然后'major' 否则'小'然后结果是
NAME AGE CASE
Loga 18 'major'
Anitha 20 'major'
Saranya 13 'minor'
我想在A表中添加CASE和结果值。它有可能吗?
答案 0 :(得分:2)
alter table a add column new_column_name text;
update a
set new_column_name = case when age >= 18 then 'major' else 'minor' end
答案 1 :(得分:0)
您需要先使用ALTER TABLE ... ADD COLUMN将列添加为NULLable,然后为所有现有值填充该列;您可能希望将其设置为不可为空:
ALTER TABLE a ADD COLUMN new_column text NULL;
UPDATE a SET new_column = CASE WHEN age >= 18 THEN 'major' ELSE 'minor' END;
ALTER TABLE a ALTER COLUMN new_column SET NOT NULL;
这将填充初始值,并强制要求为新值填充列,但不会反映任何更改(因此您可以将age
更新为超过18,但保留标签为'minor'
)。
如果age
与新列之间的关系始终存在,您可能需要考虑更复杂的事情:
'major'
/ 'minor'
逻辑,但不将其冗余地存储在表本身上