需要2个字段:表名和记录数。
这个表指的是用户表,即要所有用户表的名称和记录数,怎么写SQL?

解决方案 »

  1.   

    --建立结果表tablename(表名称),rowcount(记录数)
    create table tablerowcount(id int identity(1,1),tablename varchar(50),[rowcount] int)--循环插入结果
    declare @tablename varchar(200)
    declare @rowcount int
    declare @sql varchar(8000)
    declare table_name cursor for
    select name from sysobjects where xtype = 'U'
    open table_name
    fetch next from table_name into @tablename 
    while @@fetch_status = 0
    begin
    select @sql = 'declare @rowcount int select @rowcount = count(*) from '+@tablename + ' select '''+@tablename+''',@rowcount'
    insert into tablerowcount(tablename,[rowcount])
    exec(@sql)
    fetch next from table_name into @tablename 
    end
    close table_name
    deallocate table_name--显示结果
    select * from tablerowcount
      

  2.   

    select a.name,b.rowcnt from sysobjects a join sysindexes b on a.id = b.id where a.name = '待查询的表'
      

  3.   

    create table tablerowcount(id int identity(1,1),tablename varchar(50),[rowcount] int)
    exec sp_msforeachtable 'insert tablerowcount(tablename, [rowcount]) select N''?'', count(*) from ?'
      

  4.   

    SELECT    
               表名=case  when  a.colorder=1  then  d.name  else  ''  end,  
               字段序号=a.colorder,  
               字段名=a.name,  
               标识=case  when  COLUMNPROPERTY(  a.id,a.name,'IsIdentity')=1  then  '√'else  ''  end,  
               主键=case  when  exists(SELECT  1  FROM  sysobjects  where  xtype='PK'  and  name  in  (  
                           SELECT  name  FROM  sysindexes  WHERE  indid  in(  
                                       SELECT  indid  FROM  sysindexkeys  WHERE  id  =  a.id  AND  colid=a.colid  
                           )))  then  '√'  else  ''  end,  
               类型=b.name,  
               占用字节数=a.length,  
               长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),  
               小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),  
               允许空=case  when  a.isnullable=1  then  '√'else  ''  end,  
               默认值=isnull(e.text,''),  
               字段说明=isnull(g.[value],'')  
    FROM  syscolumns  a  
               left  join  systypes  b  on  a.xtype=b.xusertype  
               inner  join  sysobjects  d  on  a.id=d.id    and  d.xtype='U'  and    d.name<>'dtproperties'  
               left  join  syscomments  e  on  a.cdefault=e.id  
               left  join  sysproperties  g  on  a.id=g.id  and  a.colid=g.smallid      
    order  by  a.id,a.colorder  
      

  5.   

    把tablename varchar(50)改大点看看,你表名有多长??
      

  6.   

    Try:declare @table_name varchar(8000)
    create table #(table_name varchar(8000) , cnt int)declare  cursor1 Cursor scroll for select name from sysobjects 
    where type = 'U'
    open cursor1 fetch next from cursor1 into @table_name
    while @@fetch_status = 0
       begin 
         exec('Insert into # select ''' +@table_name + ' '' ,(select count(1) from ' + @table_name + ')')
         fetch next from cursor1 into @table_name
       endclose cursor1
    deallocate cursor1select * from #
    drop table #