Sql 检查presto/hive表中是否存在列名
主表包含不同的版本。旧版本表中可能不存在字段。 e、 g mytable_1只能包含列ASql 检查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
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。它们不一样。