7

让我们想象一个 3 个表的连接,例如它有 14 列。我想用别名重命名其中一列。有没有什么方法或者不需要在 select 语句中写下其他 13 个列名?

我在伪代码中寻找的是

SELECT * [rename user.login as username] from users join 
        (select * from statistics join accounts)
4

2 回答 2

6
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
于 2012-04-18T09:02:52.080 回答
4

IMO,您建议的语法很好。事实上,它与数据库语言Tutorial D非常相似:

user RENAME ( login AS username )

将从userrelvar 投影所有 14 个属性,其中一个按指定重命名。

类似地,Tutorial D 有一个ALL BUT投影算子,例如

user { ALL BUT login }

在您的情况下会导致 13 个属性的关系。

可悲的是,SQL 从来没有这些有用的快捷方式,而且可能永远也不会。也许我们应该认为自己很幸运能够SELECT *在早期获得;在最近的时间里,我们永远不会被授予它!代表 SQL 用户的小组向 SQL 标准委员会提出了SELECT * BUT <commalist>类型语法的建议,但被拒绝了。SELECT *SO也不喜欢!

于 2012-04-18T13:21:10.407 回答