Double Join导致重复记录和错误行计数

时间:2014-09-04 18:45:44

标签: sql-server tsql

我知道这是我的连接错误,但不知道为什么我得到多行和错误的行数?

我的tsql:

DECLARE @PeopleIDTables TABLE ( Column_Name varchar(500) NULL, Table_Name varchar(500) NULL)

INSERT INTO @PeopleIDTables
    SELECT COLUMN_NAME + ',', TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME LIKE 'People_ID'
    ORDER BY TABLE_NAME

--SELECT * FROM @PeopleIDTables


SELECT PIT.Table_Name, I.rows NumberRows
FROM @PeopleIDTables PIT
JOIN sys.tables T ON PIT.Table_Name = T.name
JOIN sys.sysindexes I ON T.object_id = I.id

以下是我的结果摘录:

PEOPLE  770438
PEOPLE  770438
PEOPLE  770438
PEOPLE  770438
PEOPLE  770438
PEOPLE  770438
PEOPLE  770438
PEOPLE  0

实际上这个开发系统上只有一个db而且它只有一个人表? 查询的前半部分准确地返回64个具有People_Id列的表。

请帮忙。

谢谢

1 个答案:

答案 0 :(得分:1)

也许你的意思是......

SELECT PIT.Table_Name, Max(I.rows) NumberRows
FROM @PeopleIDTables PIT
JOIN sys.tables T ON PIT.Table_Name = T.name
JOIN sys.sysindexes I ON T.object_id = I.id
GROUP BY PIT.Table_Name

我假设你想要最大行,因为索引可能正在构建或需要更新..而且这里的rowcount并不总是100%准确。