显示all_tab_columns少于4列的所有表,其中owner ='GYS'并以'COL'开头,而不使用按功能分组。
尝试使用count / max函数时出错。任何想法将不胜感激!
答案 0 :(得分:1)
此查询将为您提供数据库中所有表的名称,其中列数小于4
SELECT TABLE_NAME, COUNT(Column_Name) NumOfCols
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_NAME
HAVING COUNT(Column_Name) < 4
答案 1 :(得分:0)
declare
cursor c1
is
select t.table_name, t.column_name, t.owner,
(select count('table_name.column_name')
from all_tab_columns ct where ct.table_name = t.table_name )
as namecounter
from all_tab_columns t where t.owner ='GYS' and t.table_name like 'COL%';
b1 c1%rowtype;
tab_count number(10);
temp_column varchar2(100);
begin
open c1;
loop
fetch c1 into b1;
temp_column := b1.namecounter;
while temp_column <4
loop
dbms_output.put_line(b1.table_name||b1.column_name||b1.namecounter);
tab_count:=c1%rowcount;
dbms_output.put_line(tab_count);
end loop;
end loop;
close c1;
end;
/
我终于解决了上述问题但是在执行速度方面它运行得非常慢,任何提高性能的想法都会受到赞赏!