这是我正在尝试做的事情-我有一个包含很多列的表,并且想要创建一个视图,其中包含根据其他列中值的特定组合重新分配的一个列
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
Name, Age, Band, Alive,,,,<too many>,, Age
我可以在选择的陈述中使用“ AS” Name, Age, Band, Alive,,,,<too many>,, Age_Computed.
Name, Age, Band, Alive,,,,<too many>,, Age_Computed.
但是,我想Name, Age, Band, Alive.,,,,找到年龄实际上是计算年龄的原始方案 。
Name, Age, Band, Alive.,,,,
我可以选择重命名SELECT * and A_1 as A, B_1 as b吗?(然后A_1完全消失)或选择性的*,我可以选择除某些列之外的所有列?(这也将解决上一个语句中提出的问题)
SELECT * and A_1 as A, B_1 as b
我知道枚举所有列并创建适当查询的方法,但是我仍然希望有一种“更简单”的方法可以做到这一点。
抱歉,不,没有一种方法可以根据需要使用SELECT *结构替换现有的列名。
SELECT *
最好显式定义列,尤其是对于视图,最好不要使用SELECT *。创建视图时,只需将表的DDL用作模型。这样,您可以更改所需的任何列定义(如您的问题),并消除不适合该视图的列。我们使用这种技术来屏蔽或消除包含敏感数据(例如社会保险号和密码)的列。marc_s在注释中提供的链接很不错。