SELECT *不返回任何行,但SELECT Count(*)返回非零值

时间:2012-04-09 08:49:24

标签: sql sql-server tsql

我运行以下查询:

a. select * from TABLE_TEMP

查询成功执行但不返回任何行。返回的数据集为空并包含0行。 可以从以下位置下载此查询的执行计划: Execution Plan Query a

b. select count(*) from TABLE_TEMP

此查询也成功执行,但它返回一些有限值 可以从以下位置下载此查询的执行计划: Execution Plan Query b

您能否提供解决此问题的任何指示。

PFB截图: Weird behavior

2 个答案:

答案 0 :(得分:3)

您的数据库中可能存在某种损坏。熟悉the documentation后,运行DBCC CHECKDB(或DBCC CHECKTABLE)。特别是关于数据库兼容性级别的索引检查部分和:

  

在早期版本的SQL Server中,每个表和每个索引的行数和页数的值可能会变得不正确。在某些情况下,这些值中的一个或多个甚至可能变为负值。在SQL Server 2005及更高版本中,始终正确维护这些值。因此,在SQL Server 2005及更高版本上创建的数据库不应包含不正确的计数;但是,升级到SQL Server 2005及更高版本的数据库可能会。

答案 1 :(得分:-1)

Count是SQL中的函数,它返回Int值,即受影响的记录数。