为什么"select count(*)"从没有返回1

Joh*_*ny5 21 sql sql-server count sql-server-2012

使用SQL Server 2012:

use master
select *
Run Code Online (Sandbox Code Playgroud)

产量

必须指定要选择的表

这正是我所期待的.

但有趣的是

use master
select count(*)
Run Code Online (Sandbox Code Playgroud)

返回1.

有人可以向我解释这里算什么?

编辑:可能包括来源......

And*_*rew 13

SQL Server(幕后)有效地将一个from应用于一个只有一行的虚拟表.因此,你的计数将获得1.

select 'test'
Run Code Online (Sandbox Code Playgroud)

作为一个例子,将做同样的事情,一次返回'测试'.

它类似于Oracle中的DUAL表,DB2中的SYSDUMMY1等.

根据要求,这里有关于此主题的MS Connect的几个链接:

Clicky

更多Clicky

  • 这是另一个[连接项,其中Microsoft声明此行为是一个错误(但项目已关闭,因为无法修复)](http://connect.microsoft.com/SQLServer/feedback/details/338532/count-returns -a-值-1). (5认同)