我尝试使用concat函数来组合两列,但我也得到了输出 我的问题是为什么我没有看到新列被添加到表中。连接只是暂时的结果吗?
SELECT CONCAT(Name,',',Continent)AS new_address FROM Country
答案 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
答案 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
字段将始终正确。