Mysql:将select的输出作为新列放在表中

时间:2017-01-13 11:09:57

标签: mysql sql select

我有mysql表

  

姓氏名字|完整

现在我想用“SELECT CONCAT”连接“surname”和“name”,并将输出放入“完整”列。

任何想法?

2 个答案:

答案 0 :(得分:2)

如果你真的想这样做,@ scaisEdge的回答会告诉你如何做。但你真的不应该!这样做意味着引入冗余。这意味着您的数据库无法正确规范化。通常,您不会在一列或多列上存储由简单操作产生的数据。

请考虑使用VIEW。

CREATE VIEW extended_table AS SELECT surname, name, CONCAT(name,surname) AS complete

这没有任何存储开销。或者,您可以使用generated column

ALTER TABLE users add column complete as CONCAT(name, surname);

这两个选项都允许您将表格保持为标准化形式,而不是将任何冗余数据保存到磁盘。

@jarlh在评论中提出了一个非常有效的观点,如何处理null

CREATE VIEW extended_table AS SELECT surname, name, CONCAT(COALESCE(name,''),COALESCE(surname,'')) AS complete

答案 1 :(得分:0)

您可以使用更新

update my_table 
set complete = concat(surname, name)