mysql - Athena SQL 从可变数量的表创建表
问题描述
我想从我从 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
如何将表名结果用作 CREATE TABLE FROM 子句中的列表?
我用 WITH 尝试过这样的事情:
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_%');
new_table 只是 mytable/nested 查询的副本。
想法?
谢谢!
解决方案
我最终选择了这样的视图:
CREATE OR REPLACE VIEW clients_all AS
SELECT column_1, column_2 FROM client1
UNION ALL
SELECT column_1, column_2 FROM client2
缺点是每当添加新的 client_n 表时我都必须更新视图,并明确指定表的名称而不是从查询中推断它们,
但我可能不得不将它分成两个查询,即使创建一个表为原本打算的。
推荐阅读
- google-cloud-platform - Cloud SDK:gcloud sql 实例描述抛出错误 404:Cloud SQL 实例不存在
- laravel - 如何在多租户 SaaS 应用程序中为每个租户管理不同的队列?
- unit-testing - Resharper 测试窗口显示“已中止”,但所有测试均通过
- excel - 使用 VBA 对零售网站进行网页抓取
- python - 如何使用 pandas 实现切片和切块概念?
- oracle - Date of release AnyTime
- php - PHP 变量访问错误突然出现,只需编辑/保存相关文件即可修复,无需实际更改。这可能是什么原因造成的?
- java - 错误:(34、12)java:不兼容的类型:java.lang.String 无法转换为 org.openqa.selenium.WebDriver
- javascript - “元素”类型上不存在属性“内部文本”
- javascript - 用于搜索所有列的 javascript 搜索功能