如何根据其他列的值在数据库表中创建列?例如:我想创建一个名为" full_name"的列。我希望它的行值来自" first_name"和" last_name"。对于第一行:first_name = Bob和last_name = Jones。如何使full_name获得Bob Jones作为其值? (如果可能的话,我更喜欢在一个命令中完成)。
答案 0 :(得分:0)
首先创建新列:
ALTER TABLE myTable
ADD 'Full Name' varchar;
第二步将现有的名字和姓氏移到新列中:
UPDATE TABLE myTable
//这与您使用的sql不同 对于mysql:
SET 'Full Name' = CONCAT_WS(' ',firstname,lastname);
OR for transact sql:
SET 'Full Name' = (firstname + ' ' + lastname);
或者对于oracle:
SET 'Full Name' = (firstname || ' ' || lastname);
(我不认为还有其他方法可以解决这个问题)
然后最后删除列的名字和姓氏,这样你就可以继续使用全名了(你不必删除你可以编辑插入查询的列,这样它也会自动插入全名但这将是冗余数据)
ALTER TABLE myTable
DROP COLUMN firstname, lastname;
答案 1 :(得分:0)
无需存储两次相同的数据,而是创建一个视图:
create view viewname as
select first_name || last_name as full_name, ...
from tablename
||
是ANSI SQL串联。有些产品使用+
或concat()
代替。
使用此解决方案,您将不会遇到任何数据不一致。 (当有人更新其中一个名称栏时......)