我想返回所有表格及其旁边的计数。什么是最快捷的方式呢?
我知道在Oracle中,您可以执行以下操作,但不确定Sybase:
declare n number;
begin
for rec in (select object_name from user_objects where object_type='TABLE')
loop
execute immediate 'select count(*) from '||rec.object_name into n;
dbms_output.put_line (rec.object_name||':'||n);
end loop;
end;
答案 0 :(得分:20)
以下是执行上述操作的Sybase sql:
select ob.name,st.rowcnt
from sysobjects ob, systabstats st
where ob.type="U"
and st.id=ob.id
order by ob.name
答案 1 :(得分:9)
这取决于您所说的Sybase产品。在我的SQL Anywhere(9和11)中,您的解决方案不起作用,但这有效:
select table_name, count
from systable
where primary_root<>0 and creator=1
order by 1
答案 2 :(得分:3)
如果当前用户是创建者:
SELECT table_name, count
FROM sys.systable
WHERE creator = user_id()
注意:我在Sybase ASA 9中测试它。
答案 3 :(得分:2)
由于systabstats
表中可以有多个条目,因此查询应为:
select ob.name, sum(st.rowcnt)
from sysobjects ob, systabstats st
where ob.type="U"
and st.id=ob.id
group by ob.name
order by ob.name
答案 4 :(得分:0)
使用以下查询
select name,row_count(db_id(),id) as "Rows"
from sysobjects where type='U' order by 2 desc
答案 5 :(得分:0)
从sysobjects ob中选择ob.name,st.rowcnt,systabstats st其中b.type ='U' 和ob.name
的st.id = ob.id和indid = 0顺序答案 6 :(得分:0)
这适用于我使用&#34; SQL Central&#34;使用SQL Anywhere 17:
SELECT table_name, st.count
FROM systable st
WHERE table_type = 'BASE'