【发布时间】:2012-12-25 13:51:28
【问题描述】:
这就是我想要做的 - 我有一个包含很多列的表,并希望创建一个视图,其中一个列根据其他列中的某些值组合重新分配,例如
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 完全消失)
还是选择性*,我可以选择除某些列之外的所有列? (这也将解决上一个语句中提出的问题)
我知道枚举所有列并创建适当查询的技巧,但我仍然希望有一种“更简单”的方法来做到这一点。
【问题讨论】:
-
选择 * 不是一个好主意。只需列出所有列。选择 * 适合在提示符下输入的人,而不适合高效的程序。
-
感谢您的及时回复,但我实际上需要所有列,并且不想通过获取表架构和构建查询来枚举它们。
-
所以列出所有的列。 SQL 语法禁止将 * 与其他任何内容组合。
-
别无选择。 SQL 没有。您必须编写一个程序来读取元数据并生成您的创建视图。