选择*并在一列上创建别名

时间:2012-04-18 09:00:33

标签: sql sqlite

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

我在伪代码中看到的是

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

2 个答案:

答案 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!