一尘不染

重命名SQL中的SELECT *中的单列,选择除列之外的所有列

sql

这是我正在尝试做的事情-我有一个包含很多列的表,并且想要创建一个视图,其中包含根据其他列中值的特定组合重新分配的一个列

Name, Age, Band, Alive ,,, <too many other fields)

我想要一个将重新分配其中一个字段的查询,例如

Select *, Age = 
CASE When "Name" = 'BRYAN ADAMS' AND "Alive" = 1 THEN 18
     ELSE "Age"
END
FROM Table

但是,我现在拥有的架构是 Name, Age, Band, Alive,,,,<too many>,, Age

我可以在选择的陈述中使用“ AS” Name, Age, Band, Alive,,,,<too many>,, Age_Computed.

但是,我想Name, Age, Band, Alive.,,,,找到年龄实际上是计算年龄的原始方案 。

我可以选择重命名SELECT * and A_1 as A, B_1 as b吗?(然后A_1完全消失)或选择性的*,我可以选择除某些列之外的所有列?(这也将解决上一个语句中提出的问题)

我知道枚举所有列并创建适当查询的方法,但是我仍然希望有一种“更简单”的方法可以做到这一点。


阅读 138

收藏
2021-03-10

共1个答案

一尘不染

抱歉,不,没有一种方法可以根据需要使用SELECT *结构替换现有的列名。

最好显式定义列,尤其是对于视图,最好不要使用SELECT *。创建视图时,只需将表的DDL用作模型。这样,您可以更改所需的任何列定义(如您的问题),并消除不适合该视图的列。我们使用这种技术来屏蔽或消除包含敏感数据(例如社会保险号和密码)的列。marc_s在注释中提供的链接很不错。

2021-03-10