SQL多表查询列名

SQL多表查询列名,sql,sql-server,database,Sql,Sql Server,Database,我在SQL中的数据库中有多个表(数量>100),每个表可能有几百个条目 对于每个表,我只想从至少有1个非空条目的表中检索列的名称 如何执行此操作?要返回表/列名: SELECT table_name, column_name FROM information_schema.columns 这很简单,下面是一个针对null的解决方案,具体取决于您是否拥有权限: select a.table_name , schema_name , sum(c.rows) total_row

我在SQL中的数据库中有多个表(数量>100),每个表可能有几百个条目

对于每个表,我只想从至少有1个非空条目的表中检索列的名称


如何执行此操作?

要返回表/列名:

 SELECT table_name, column_name
 FROM information_schema.columns 
这很简单,下面是一个针对null的解决方案,具体取决于您是否拥有权限:

select a.table_name
    , schema_name
    , sum(c.rows) total_rows
from
    information_schema.tables  a
    join information_schema.schemas b on (a.schema_id = b.schema_id)
    join information_schema.partitions c on (a.object_id = c.object_id)
where c.index_id in (0,1)
group by a.name,b.name
having sum(c.rows) = 0; 

注意:我在vertica中这样做了,您必须能够访问分区。此外,一些数据库使用sys而不是information_schema,但想法是相同的。

请参阅规范化。您是否在寻找
非空
列或包含
非空
数据的可空列?