【发布时间】:2013-06-01 21:24:22
【问题描述】:
我想知道如果列存在,我是否可以选择列的值,否则只选择 null。换句话说,我想“提升”选择语句来处理列不存在的情况。
SELECT uniqueId
, columnTwo
, /*WHEN columnThree exists THEN columnThree ELSE NULL END*/ AS columnThree
FROM (subQuery) s
请注意,我正在巩固我的数据模型和设计。我希望在接下来的几周内排除这种逻辑,但我真的很想超越这个问题,因为数据模型修复比我现在想解决的更耗时。
另外请注意,我希望能够在一个查询中执行此操作。所以我不是在寻找像
这样的答案首先检查您的子查询中有哪些列。然后修改你的 查询以适当地处理子查询中的列。
【问题讨论】:
-
你为什么要编写假设你的数据模型将是随意的代码?为什么不对现在存在的列进行编码,当 ColumnThree 成为数据模型中的永久一等公民时,修复查询?此外,我强烈建议不要告诉人们你不想要的东西。你所说的限制是不可能满足的,你需要给出一个比这更好的理由。当您可以将事物封装在存储过程中时,“一次查询”就没有什么意义了。
-
@AaronBertrand 你问了两个问题,所以我会解决这两个问题。首先,我的目标是尽快发布高质量的功能。现在我需要来自
ColumnThree的值(当它们存在时)才能使我的功能正常工作。所以我会在它存在时使用它......即使解决方案并不优雅。 -
@AaronBertrand 其次,我很欣赏你的建议,但很不同意。我想清楚地表达我的要求,以便用户可以专注于建议解决我的问题的解决方案,而不会浪费时间写出我知道会不满意的答案。我认为准确地说明什么不是一个令人满意的答案有助于用户专注于更有价值的解决方案。
标签: sql sql-server select exists