让我们想象一下3个表的连接,例如它有14个列。我想用别名重命名其中一列。有没有办法或者不必在select语句中写入其他13个列名呢?
我在伪代码中看到的是
SELECT * [rename user.login as username] from users join
(select * from statistics join accounts)
答案 0 :(得分:5)
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
答案 1 :(得分:3)
你提出的语法很好,IMO。实际上,它与数据库语言Tutorial D非常相似:
user RENAME ( login AS username )
将从user
relvar中投射所有14个属性,其中一个属性按指定重命名。
类似地,教程D具有ALL BUT
投影算子,例如
user { ALL BUT login }
在您的情况下,会导致13个属性的关系。
可悲的是,SQL从来没有这些有用的快捷方式,也许永远不会。也许我们应该认为自己很幸运能够在早期得到SELECT *
;我们永远不会在最近的时间里获得它!代表SQL用户的组向SQL标准委员会提出了SELECT * BUT <commalist>
类型语法的提议,但它被拒绝了。 SELECT *
is disliked on SO too!