让我们想象一个 3 个表的连接,例如它有 14 列。我想用别名重命名其中一列。有没有什么方法或者不需要在 select 语句中写下其他 13 个列名?
我在伪代码中寻找的是
SELECT * [rename user.login as username] from users join
(select * from statistics join accounts)
select users.login as username, users.*
from users
不幸的是,该列将出现两次,但您无能为力。
加入它看起来像这样:
select u.login as username, u.*, s.*
from users as u, statistics as s
where u.user_id = s.user_id
IMO,您建议的语法很好。事实上,它与数据库语言Tutorial D非常相似:
user RENAME ( login AS username )
将从user
relvar 投影所有 14 个属性,其中一个按指定重命名。
类似地,Tutorial D 有一个ALL BUT
投影算子,例如
user { ALL BUT login }
在您的情况下会导致 13 个属性的关系。
可悲的是,SQL 从来没有这些有用的快捷方式,而且可能永远也不会。也许我们应该认为自己很幸运能够SELECT *
在早期获得;在最近的时间里,我们永远不会被授予它!代表 SQL 用户的小组向 SQL 标准委员会提出了SELECT * BUT <commalist>
类型语法的建议,但被拒绝了。SELECT *
SO也不喜欢!