我已經使用腳本創建了一個視圖,該視圖具有數據庫中每個表的表名,以及相應表中的數據行數。一切工作正常與SELECT *
。但是,我想只查詢某些行,但我似乎無法做到這一點。爲什麼我無法查詢SQL視圖中的單個列?
的觀點是用下面的腳本創建(信貸DatabaseZone.com爲腳本):
CREATE VIEW RowCount_AllTables
AS
SELECT DISTINCT
sys.schemas.name, sys.tables.name AS tableName,
sys.dm_db_partition_stats.row_count AS 'RowCount'
FROM
sys.tables
INNER JOIN
sys.dm_db_partition_stats ON sys.tables.object_id = sys.dm_db_partition_stats.object_id
INNER JOIN
sys.schemas ON sys.tables.schema_id = sys.schemas.schema_id
WHERE
(sys.tables.is_ms_shipped = 0)
當我運行Select *
對所產生的看法,我得到的結果,如:
name tableName RowCount
dbo Table1 2
dbo Table2 1230
dbo Table3 0
如果我只查詢tableName列,那工作正常,並返回表名稱。但是,如果我嘗試查詢RowCount列,則會收到錯誤消息Incorrect syntax near the keyword 'RowCount
。無論我是否限定數據庫,都會發生這種情況 - 它似乎不會將RowCount
識別爲我可以在查詢中調用的有效列。所以這個腳本失敗:
SELECT RowCount
FROM RowCount_AllTables;
但是這一個工程:
SELECT tableName
FROM RowCount_AllTables;
這是怎麼回事?我希望能夠在查詢中替換視圖中的列名,但只要我不能引用RowCount
列,我就不能這樣做。
'Rowcount'是一個保留字:https://msdn.microsoft.com/en-us/library/ms189822.aspx – sgeddes
Bingo!謝謝 - 我在腳本中重命名了列名以創建視圖,現在它可以工作。 – Scro