我正在創建一個查詢,該查詢返回每個表中的列數,但我想排除視圖。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