别名列数据库级别的名称[MySQL]

时间:2013-12-07 00:17:26

标签: mysql sql

“别名”可能是错误的单词,因为它在将列/表名称引用为查询中的其他内容时使用。

我感兴趣的是,是否有办法在数据库中为列提供两个名称。如果我打印这样的表,它将如下所示:

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;

那么,这样的功能是否存在?

干杯, 尼尔

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

如果您不介意从V_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;
...

正如肯指出的那样,这并不是所要求的。但根据具体情况,可能正是需要的。