一个表主体包含不同的版本。旧版本的表中可能不存在字段。例如mytable_1可能只包含列A
columnA
a
a
c
c
mytable_2可能包含一个称为columnB 的额外列
columnA columnB
a b
a k
c d
c e
我正试着运行类似的东西
select * from mytable_{{version}}
where
columnA = 'a'
{IF columnB exist}
And columnB = 'b'
{endif}
结果会是如果在mytable1上运行此将返回前两行。如果在mytable2上运行此将返回第一行。
如何为此编写查询?
您可以通过编程获得表中的列列表:
SELECT *
FROM information_schema.columns
WHERE table_name = 'mytable_...' AND table_schema = '....'
如果给定的列存在,您似乎希望利用这些信息发出带有附加条件的查询。要做到这一点,您需要在向Presto发出查询的应用程序中应用此逻辑,而不能仅在SQL中实现这一点。