“别名”可能是错误的单词,因为它在将列/表名称引用为查询中的其他内容时使用。
我感兴趣的是,是否有办法在数据库中为列提供两个名称。如果我打印这样的表,它将如下所示:
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 |
+--------------------------------------------+
在这种情况下,username
和uname
在查询语句中将是同义词,password
和pswd
也是如此。
因此以下语句将具有相同的输出:
mysql> SELECT id, username FROM User;
...
mysql> SELECT id, uname FROM User;
...
我想避免做像
这样的事情mysql> SELECT id, username AS uname FROM User;
那么,这样的功能是否存在?
干杯, 尼尔
答案 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;
...
正如肯指出的那样,这并不是所要求的。但根据具体情况,可能正是需要的。