在vertica中,是否有方法选择表中可能存在或不存在的列,如果该列不存在,则获取null作为值?
用例是从许多表中堆叠数据,并编写一个脚本来实现这一点。不是所有的列都存在于所有的表中,所以我想编写一个这样的脚本,在特定的表中不存在某个列的地方只获取null值。
SELECT * FROM
(SELECT field1, field2, ... field100 from table1 ) UNION ALL
(SELECT field1, field2, ... field100 from table2 ) UNION ALL
(SELECT field1, field2, ... field100 from table3 ) UNION ALL
(SELECT field1, field2, ... field100 from table4 ) UNION ALL
...
(SELECT field1, field2, ... field100 from tablen ) UNION ALL
在我们的应用程序中,很难预先知道每个表是否都有每个命名列,如果没有,每个表中缺少哪些列。
编辑:引用前面的同一个问题,如果列存在,请选择columnvalue,否则为空
2条答案
按热度按时间gr8qqesn1#
如果性能不重要,请尝试vertica flex表:
hs1ihplo2#
如果表有主键,可以尝试:
作用域规则在sql中的工作方式是
colx
将从子查询中“满足”-ift
有列。否则,它将到达外部查询并选择x
,因为t
也不会有专栏。