【发布时间】:2011-03-01 17:17:25
【问题描述】:
我正在创建一个返回每个表中列数的查询,但我想排除视图。
以下工作但返回查看结果:
SELECT COUNT(*), table_name
FROM INFORMATION_SCHEMA.COLUMNS
Group By table_name
有什么建议吗?
注意:MSSQL 2005+
【问题讨论】:
标签: sql sql-server-2005
我正在创建一个返回每个表中列数的查询,但我想排除视图。
以下工作但返回查看结果:
SELECT COUNT(*), table_name
FROM INFORMATION_SCHEMA.COLUMNS
Group By table_name
有什么建议吗?
注意:MSSQL 2005+
【问题讨论】:
标签: sql sql-server-2005
假设 SQL 2005 或更高版本
SELECT
t.name,
count(c.name)
FROM
sys.tables t
inner join sys.columns c
ON t.object_id = c.object_id
group by t.name
【讨论】:
类似这样的:
SELECT COUNT(col.column_name), col.table_name
FROM information_schema.columns col
JOIN information_schema.tables tbl
ON tbl.table_name = col.table_name
AND tbl.table_schema = col.table_schema
AND tbl.table_catalog = col.table_catalog
AND tbl.table_type <> 'VIEW'
GROUP BY col.table_name
【讨论】:
加入INFORMATION_SCHEMA.TABLES 以查明该表是否为视图。
SELECT COUNT(col.column_name), tab.table_name
FROM INFORMATION_SCHEMA.tables tab
JOIN INFORMATION_SCHEMA.COLUMNS col ON col.table_name = tab.table_name
WHERE tab.table_type != 'VIEW'
GROUP BY 2
ORDER BY 2
【讨论】:
SELECT tab.table_name,COUNT(col.column_name)
FROM INFORMATION_SCHEMA.tables tab
JOIN INFORMATION_SCHEMA.COLUMNS col ON col.table_name = tab.table_name
WHERE tab.table_type != 'VIEW'
GROUP BY tab.table_name
ORDER BY tab.table_name
此代码显示表名及其前面的列数。 您可以根据需要添加架构名称。
【讨论】: