我有一个表A和包含值如何将结果存储在表中?
NAME AGE
Loga 18
Anitha 20
Saranya 13
我测试表中的值,如果使用的情况下声明的情况下条件时,AGE> = 18然后“主要” 别的“次要”然后将结果是像
NAME AGE CASE
Loga 18 'major'
Anitha 20 'major'
Saranya 13 'minor'
我想在我的A表中添加CASE和永久结果的值。它有可能吗?
我有一个表A和包含值如何将结果存储在表中?
NAME AGE
Loga 18
Anitha 20
Saranya 13
我测试表中的值,如果使用的情况下声明的情况下条件时,AGE> = 18然后“主要” 别的“次要”然后将结果是像
NAME AGE CASE
Loga 18 'major'
Anitha 20 'major'
Saranya 13 'minor'
我想在我的A表中添加CASE和永久结果的值。它有可能吗?
alter table a add column new_column_name text;
update a
set new_column_name = case when age >= 18 then 'major' else 'minor' end
您需要先使用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
和新列之间的关系必须始终坚持,你可能要考虑更复杂的东西:
这个更新语句不必要的复杂 - 你只想'new_column_name = case when age> = 18 then'major'else'minor'end' – IMSoP 2013-05-08 12:03:08
@IMSoP是的,更正了,谢谢。 – 2013-05-08 12:09:03