是否有方法永久别名mysql列?



我有一个mysql表的列名称的count,我需要重命名。在开发的早期阶段,这是一个糟糕的列名选择。然而,简单地重命名有巨大的回归问题-几个旧版本的应用程序仍然会引用count,所以我不能简单或轻松地将列名更改为其他东西。

是否有任何方法或技术,我可以使用,将允许我永久别名列的其他东西?因此,最终当旧版本的应用程序淘汰时,我们可以删除原始名称,并使别名成为永久名称。

如果别名不起作用或不可能,有人能提出另一个想法吗?我们真的需要把这个列从count

中移开查找如下内容:

// I don't think anything like this exists
alter table tableName change column count set alias countAlias ;   
ORIG:  SELECT * FROM tableName WHERE count=?
NEW: SELECT * FROM tableName WHERE countAlias=?

但是其中countcountAlias是同一列,因此查询将工作相同。

样本表:

create table user_data(user_id int, cDate date, count int);
mysql> select * from user_data;
+---------+--------+--------+
| user_id | cDate  | count  |
+---------+--------+--------+

您可以创建一个生成的列…它是列的同义词:

alter table tableName add countAlias int
generated always as (count) virtual;

这使得列成为表的一部分。这是"计算"出来的。当值在查询中被引用时。

你可以创建一个视图

create view my_view 
select col1, ..coln, countAlias 
from your_table  

,则可以查询视图

Select * from my_view 
where countAlias= ?

相关内容

  • 没有找到相关文章

最新更新