【问题标题】:Check if a column name is exist in presto/hive table检查 presto/hive 表中是否存在列名
【发布时间】:2021-01-31 06:36:00
【问题描述】:

一个主表包含不同的版本。旧版本表中可能不存在字段。 例如 mytable_1 可能只包含 columnA

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 上运行它 第一行将被返回。

为此如何编写查询?

【问题讨论】:

  • 请提供样本数据和期望的结果。此外,确定您使用的是 Hive 还是 Presto。它们不一样。

标签: sql hive hiveql presto


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多