sql - 在 SQL 中重命名 SELECT * 中的单个列,选择除一列之外的所有列

标签 sql select

这就是我想要做的 - 我有一个包含很多列的表,并且想要创建一个 View ,其中一个列根据其他列中的某些值组合重新分配,例如
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.,,,,其中 Age 实际上是计算的年龄。

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

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

最佳答案

抱歉,不,无法使用 SELECT * 替换现有列名随心所欲地 build 。

明确定义列总是更好,尤其是对于 View ,并且永远不要使用 SELECT * .只需在创建 View 时使用表的 DDL 作为模型。这样,您可以更改您想要的任何列定义(如您的问题)并消除不适合 View 的列。我们使用这种技术来屏蔽或消除包含敏感数据(如社会安全号码和密码)的列。 marc_s 在评论中提供的链接是一个很好的阅读。

关于sql - 在 SQL 中重命名 SELECT * 中的单个列,选择除一列之外的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14031225/

相关文章:

php - PHP 文件中嵌入 SQL 的 Notepad++ 语法高亮

sql - PostgreSQL 支持的最早时间戳

sql - 混合隐式和显式 JOIN

mysql - 比较mysql中同一列的值

LINQ:选择 <条件> 或 <条件>

sql - 在用户定义的函数中声明一个表变量

java - App Engine Java Servlet 不连接到 Cloud SQL

sql - 如何根据第一个 SELECT 的结果添加第二个 SELECT?

mysql - SELECT 在 SELECT - UPDATE 事务期间返回更新的值

MYSQL统计每类item的颜色数