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

Add*_*dev 5 sql sqlite

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

我正在寻找伪代码是什么

SELECT * [rename user.login as username] from users join 
        (select * from statistics join accounts)
Run Code Online (Sandbox Code Playgroud)

mak*_*mov 5

select users.login as username, users.* 
     from users
Run Code Online (Sandbox Code Playgroud)

不幸的是,该列会出现两次,但是你无能为力.

使用join,它看起来像这样:

select u.login as username, u.*, s.* 
     from users as u, statistics as s 
     where u.user_id = s.user_id
Run Code Online (Sandbox Code Playgroud)


one*_*hen 4

IMO,您提出的语法是一个很好的语法。其实它和数据库语言Tutorial D很相似:

user RENAME ( login AS username )
Run Code Online (Sandbox Code Playgroud)

将从user相关变量中投影所有 14 个属性,其中一个属性按指定重命名。

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

user { ALL BUT login }
Run Code Online (Sandbox Code Playgroud)

在你的例子中会产生 13 个属性的关系。

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