数据库级别的别名[MySQL]



"Alias"可能是一个错误的词,因为它是在将列/表名称引用为查询中的其他名称的上下文中使用的。

我感兴趣的是,是否有一种方法可以在数据库中为列指定两个名称。如果我打印这样一张表,它会是这样的:

mysql> SELECT * FROM User;
+--------------------------+-----------------+
| id | username | uname    | password | pswd |
+----+---------------------+-----------------+
|  0 | bob_jones@gmail.com |    some_pw_hash | 
|  1 | sue_smith@gmail.com |    some_pw_hash |
+--------------------------------------------+ 

在这种情况下,usernameuname在查询语句中是同义词,passwordpswd也是同义词。

因此,以下语句将具有相同的输出:

mysql> SELECT id, username FROM User;
...
mysql> SELECT id, uname FROM User;
...

我想避免做类似的事情

mysql> SELECT id, username AS uname FROM User;

那么,像这样的功能存在吗?

干杯,Neil

不,这是不可能的。要做到这一点,您必须添加一个新的、实际的第二列,并使用触发器来保持它们的同步,这将是愚蠢的。

只需正确编写SQL即可使用正确的列名。

如果您不介意从V_User而不是User中进行选择,那么视图可以为您提供所需内容。

CREATE VIEW V_User AS
SELECT username as username,
       username as uname
FROM User;

然后这两个查询有相同的结果:

mysql> SELECT id, username FROM V_User;
...
mysql> SELECT id, uname FROM V_User;
...

正如Ken所指出的,这并不是人们所要求的。但根据具体情况,这可能正是我们所需要的。

最新更新