【发布时间】:2022-06-13 05:21:56
【问题描述】:
我有以下表格:
Table_A Table_B Table_C List_A
表_A:
Column_A Column_B Column_C
表_B:
Column_A Column_B Column_C
表_C:
Column_A Column_B Column_C
列表_A:
Line_D Line_E Line_F
我想从具有相似名称的表中选择所有列。在此示例中,它们是 Table_A, Table_B, Table_C。他们的名字以“Table_”开头。
怎么做?
【问题讨论】:
-
纯粹在 SQL 中,你不能。您需要编写代码来收集表列表,然后编写代码来编写将表联合在一起的 SQL。
-
@MatBailie 我不能写像
select * from tables where tables like 'Table_%'这样的东西?我期待这种事情。 -
SQL 是强静态类型的。这些表可能有不同的列名、不同的数据类型等。作为程序员,您必须处理所有这些。此外,SQL 是结构化查询语言,它是用于结构化数据的,它的名字。如果您事先知道要组合哪些表,请编写一个使用 UNION ALL 组合表的视图。如果你事先不知道,你使用的是半结构化数据,需要编写代码来处理后果。
-
有成千上万的表具有相似的名称。不可能硬编码应该包含哪些表。但是如果它们有相同的列名呢?
-
根据我的第一条评论,您不能仅在 SQL 中执行此操作。您需要编写查询表列表的代码,然后编写新的 SQL(称为动态 SQL),然后运行以编程方式生成的 SQL。您的 SQL 运行情况如何?
标签: sql apache-spark apache-spark-sql databricks