athenasql从数量可变的表中创建表

dtcbnfnu  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(327)

我想从select查询得到的变量多表名创建一个表/视图。
可以从多个已知表创建一个表,如下所示:

CREATE TABLE new_table AS
SELECT column_1, column_2
FROM clients_1, clients_2, ... clients_n;

要获取表列表,我可以使用以下方法:

SELECT DISTINCT table_name FROM information_schema.columns WHERE table_name like '%clients_%';

返回:

table_name
1    clients_1
2    clients_2

如何在CREATETABLEFORM子句中将表名结果用作列表?
我试过这样的方法:

WITH mytable AS 
  (SELECT DISTINCT table_name FROM information_schema.columns WHERE table_name like '%clients_%')
    CREATE TABLE new_table AS
    SELECT column_1, column_2
    FROM mytable;

但它基本上不起作用。
即使是这样,例如不使用with并选择*列-

CREATE TABLE new_table AS
SELECT *
FROM (SELECT DISTINCT table_name FROM information_schema.columns WHERE
table_name like '%clients_%');

新的表只是mytable/嵌套查询的一个副本。
思想?
谢谢!

rmbxnbpk

rmbxnbpk1#

最后我看到了这样的景象:

CREATE OR REPLACE VIEW clients_all AS
  SELECT column_1, column_2 FROM client1
  UNION ALL
  SELECT column_1, column_2 FROM client2

缺点是每当添加新的client表时,我都必须更新视图,并显式指定表的名称,而不是从查询中推断它们,
但我可能不得不将它分成两个查询,即使按照最初的意图创建一个表。

相关问题