有什么方法可以永久为 mysql 列添加别名吗?

rol*_*ger 6 mysql sql alias

我有一个 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=?
Run Code Online (Sandbox Code Playgroud)

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

样本表:

create table user_data(user_id int, cDate date, count int);

mysql> select * from user_data;
+---------+--------+--------+
| user_id | cDate  | count  |
+---------+--------+--------+
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 6

您可以创建一个生成列。。。这是该列的同义词:

alter table tableName add countAlias int
    generated always as (count) virtual;
Run Code Online (Sandbox Code Playgroud)

这使得列成为表的一部分。当在查询中引用该值时,它会被“计算”。

  • @罗林格。。。`INSERT` 不会改变。您不插入生成的列。 (2认同)

sca*_*dge 2

你可以创建一个视图

create view my_view 
select col1, ..coln, countAlias 
from your_table  
Run Code Online (Sandbox Code Playgroud)

然后你可以查询视图

Select * from my_view 
where countAlias= ?
Run Code Online (Sandbox Code Playgroud)