sql - 从长 SQL 查询中提取所有表和相应的列
问题描述
我要解决的任务是从长 SQL 查询及其各自的列中获取所有表。
例如
SELECT
t1.id, t1.gender, t1.name,
t2.age, t2.salary
FROM table1 t1
LEFT JOIN table2 t2
ON t1.id = t2.id
想要的输出:
{'table1': ['id', 'gender', 'name'], 'table2': ['age', 'salary']}
我考虑使用字符串拆分等获取所有表名并根据别名(如果可用)获取列。但是,如果有多个连接并且可能还有UNION
s,这将变得复杂。
有没有可用的图书馆或聪明的方法来做到这一点?
解决方案
如果这有帮助。从 All_TAB_COLUMN 中获取列名并对其进行透视。这仍然不是您想要的确切结果。
select * from (
select TABLE_NAME,COLUMN_NAME from ALL_TAB_COLUMNS where TABLE_NAME in
('Table1','Table2'))
pivot
(
max(table_name)
for COLUMN_NAME in ('gender','name','age','salary')
)
order by 1;