Oracle 列 table 计数 - 子选择

Oracle Column table Count - Sub-Selection

我真的只想要 SQL 查询中表中的列数,但不知何故我无法得到正确的结果。有人知道我做错了什么吗?

select count(*) from user_tab_columns where table_name='tablename' //works and gives me the number of columns


select 
    TABLE_NAME, 
    NUM_ROWS,
    (select count(*) from user_tab_columns where table_name=TABLE_NAME) as Test
from user_tables 

哈哈,看这个:

where table_name=TABLE_NAME

这永远是正确的,因为 table 名字就是 table 名字。

这是具有限定列名称的查询:

select 
  table_name, 
  num_rows,
  (select count(*) from user_tab_columns tc where tc.table_name = t.table_name) as test
from user_tables t;

作为替代方案,您可以聚合整个查询:

select t.table_name
     , num_rows
     , count(*) as num_columns
from   user_tables t
       join user_tab_columns c on c.table_name = t.table_name
group by t.table_name, t.num_rows
order by 1;