我有一个 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)
但其中count和countAlias是同一列,因此查询的工作方式相同。
样本表:
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)
您可以创建一个生成列。。。这是该列的同义词:
alter table tableName add countAlias int
generated always as (count) virtual;
Run Code Online (Sandbox Code Playgroud)
这使得列成为表的一部分。当在查询中引用该值时,它会被“计算”。
你可以创建一个视图
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)
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |