我有一个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=?
但是其中count
和countAlias
是同一列,因此查询将工作相同。
样本表:
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= ?