" CONCAT" enated列未显示在数据库表中

时间:2016-07-09 16:07:57

标签: mysql

我尝试使用concat函数来组合两列,但我也得到了输出 我的问题是为什么我没有看到新列被添加到表中。连接只是暂时的结果吗?

  SELECT CONCAT(Name,',',Continent)AS new_address FROM Country

2 个答案:

答案 0 :(得分:0)

是的,这会创建一个仅存在于def create @lession = Lession.find(params[:lession_id]) @completion = current_user.completions.create(completed_step: true, lesson_id: @lesson.id) redirected_to @completion end 查询中的列。

它肯定不会改变基础表。

如果您想将此计算添加到基础表,则可以在MySQL 5.7.6中添加generated column

SELECT

Online Demo

答案 1 :(得分:0)

如果要向表中添加列,则需要更改表:

alter table country add new_address varchar(255);

然后您可以使用update设置值:

update country
    set new_address = concat_ws(' ', name, continent);

我更喜欢concat_ws()这种类型的操作,因为如果其中一列是NULL,它就不会返回NULL

注意:更新后表格具有“正确”值。但是,对表的后续更改可能需要您重新运行更新,或者使用触发器来保持一致性。

最佳做法是定义一个视图来进行计算:

create view v_country as
    select c.*, concat_ws(' ', name, continent) as new_address
    from country;

当您通过视图访问数据时,new_address字段将始终正确。