这是我当前的sql输出表,其中包含" SERVICE_ID"和" SERVICE_NAME"列。
select T1.column_name ||','||T2.column_name, T1.table_name
from all_tab_columns T1, all_tab_columns T2
where T1.column_name = 'SERVICE_ID' and T2.column_name = 'SERVICE_NAME'
and T1.table_name = T2.table_name and T1.owner = T2.owner;
我的问题是如何将输出按" T1.table_name"排序,哪个表的总列数最少,先输出?
答案 0 :(得分:0)
您还可以使用条件聚合编写查询。然后having
子句可以获取具有两列的表,并且您可以按列最多的列排序:
select 'SERVICE_ID, SERVICE_NAME', t.table_name
from all_tab_columns t
group by t.table_name
having sum(case when t.column_name in ('SERVICE_ID', 'SERVICE_NAME') then 1 else 0 end) = 2
order by count(*) DESC;
请注意,我在SELECT
中对列名进行了硬编码。您也可以在您的版本中执行此操作。