我创建了一个VIEW,该视图使用UNION从表中选择数据。我想知道是否可以根据条件选择要合并的表。
如果tableA.ColA = 1,则从tableA中选择ColA,并从tableB中选择ColB。 其他 从表A中选择ColA,从表C中选择ColC
答案 0 :(得分:1)
听起来您可能想要这样的查询,其中查询的两个分支由于谓词相互不兼容而保证不返回数据。
select b.*
from (select ColA from tableA
Union
select ColB from tableB) b
where exists( select 1
from tableA
where colA = 1 )
union all
select c.*
from (select ColA from tableA
Union
select ColC from tableC) c
where not exists( select 1
from tableA
where colA = 1 )
但是,实际上,我倾向于质疑任何涉及做这种事情的数据模型。如果您经常需要将来自不同表的数据合并在一起,则通常意味着您的数据模型不正确。例如,您可能需要一个附加的实体,该实体是A,B和C的父实体。或者您可能想将A,B和C组合成一个具有类型列的单一实体,该列指定行是否为A, B或C。