Sql 检查presto/hive表中是否存在列名

Sql 检查presto/hive表中是否存在列名,sql,hive,hiveql,presto,Sql,Hive,Hiveql,Presto,主表包含不同的版本。旧版本表中可能不存在字段。 e、 g 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} A

主表包含不同的版本。旧版本表中可能不存在字段。 e、 g 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}
结果会是这样 如果在mytable_1上运行此操作 将返回前两行。 如果在mytable_2上运行此操作 将返回第一行


如何为此编写查询?

您可以通过编程方式获得表中的列列表:

SELECT *
FROM information_schema.columns
WHERE table_name = 'mytable_...' AND table_schema = '....'

如果给定列存在,您似乎希望利用此信息发出带有附加条件的查询。要做到这一点,您需要在向Presto发出查询的应用程序中应用此逻辑,您无法仅在SQL中实现此功能。

请提供示例数据和所需结果。另外,确定您使用的是Hive还是Presto。它们不一样。