如何使用其他几列的值创建SQL中的列?

时间:2015-05-11 07:59:30

标签: mysql sql

如何根据其他列的值在数据库表中创建列?例如:我想创建一个名为" full_name"的列。我希望它的行值来自" first_name"和" last_name"。对于第一行:first_name = Bob和last_name = Jones。如何使full_name获得Bob Jones作为其值? (如果可能的话,我更喜欢在一个命令中完成)。

2 个答案:

答案 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()代替。

使用此解决方案,您将不会遇到任何数据不一致。 (当有人更新其中一个名称栏时......)