我正在创建一个查询,该查询返回每个表中的列数,但我想排除视图。SQL:统计所有表中的列数,排除视图
下面的作品,但返回查看结果:
SELECT COUNT(*), table_name
FROM INFORMATION_SCHEMA.COLUMNS
Group By table_name
有什么建议?
注:MSSQL 2005+
我正在创建一个查询,该查询返回每个表中的列数,但我想排除视图。SQL:统计所有表中的列数,排除视图
下面的作品,但返回查看结果:
SELECT COUNT(*), table_name
FROM INFORMATION_SCHEMA.COLUMNS
Group By table_name
有什么建议?
注:MSSQL 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
加入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
每个GROUP BY表达式都必须包含至少一个不是外部参考。 – Colin 2012-04-26 09:20:20
事情是这样的:
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
列名'schema_name'无效。 列名'catalog_name'无效。 – Colin 2012-04-26 09:19:28
@Colin:谢谢。更正 – 2012-04-26 09:37:02
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
这段代码显示表名称及其列在他们面前算。 如果需要,您可以添加模式名称。
在代码中添加一些代码 – 2016-01-11 06:58:50
对于什么数据库? – 2011-03-01 17:22:18
duplicate http://stackoverflow.com/questions/1033726/getting-number-of-fields-in-a-database-with-an-sql-statement – 2011-03-01 19:59:43