SELECT COUNT(*);

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SELECT COUNT(*);相关的知识,希望对你有一定的参考价值。

我有一个数据库,database1,里面有两张桌子(Table 1Table2)。

Table1有3行,在Table2有2行。现在如果我在SELECT COUNT(*);上执行以下SQL查询database1,那么输出就是"1"

有没有人有这个想法,这"1"表示什么?

两个表的定义如下。

CREATE TABLE Table1
(
ID INT PRIMARY KEY,
NAME NVARCHAR(20)
)

CREATE TABLE Table2
(
ID INT PRIMARY KEY,
NAME NVARCHAR(20)
)
答案

这是因为您在没有指定表的情况下执行了select count(*)

count函数返回指定数据集中的行数。如果您没有指定要从中选择的表,则单个选择将只返回单行 - 因此count(*)将返回1.(在某些版本的SQL中,例如Oracle,您必须指定一个表或类似的数据库对象; Oracle包含一个虚拟表(称为DUAL),可以在不需要特定表时选择。)

另一答案

如果不指定要查询的表,通常不会执行选择计数(*)。根据要查询的默认系统表,您的数据库服务器可能会给您一个“1”的计数。

尝试使用

select count(*) from Table1

没有表名就没有意义。

另一答案

没有表名,它总是返回1是否是任何数据库....

另一答案

由于这是标记的SQL服务器,MSDN说明。

COUNT始终返回int数据类型值。

也,

COUNT(*)返回组中的项目数。这包括NULL值和重复项。

因此,由于您没有提供表来执行COUNT,因此默认(假设)是返回1

另一答案

COUNT函数返回结果的行数。如果未指定任何表,则默认返回1。即,COUNT(*), COUNT(1), COUNT(2), ...将永远返回1

另一答案
Select * 

没有from子句是“从Universe中选择所有”,因为你没有过滤掉任何内容。在你的情况下,你问的是“有多少宇宙?”这正是我教它的方式。我会在第一天写在董事会上,选择*并询问它意味着什么。答:给我这个世界。从那里我将教导如何将宇宙过滤到有意义的事物。

我必须承认,我从未想过选择计数(*),这会使它更有趣,但仍然会带来真正的答案。我们只有一个世界。 在没有咨询Steven Hawking的情况下,SQL必须只与1竞争。

查询结果是正确的。

以上是关于SELECT COUNT(*);的主要内容,如果未能解决你的问题,请参考以下文章

SQL Select 语句的用法

由浅入深聊聊Golang中select的实现机制

如何使用 CriteriaQuery 生成“select count(*) ...”

Oracle系列:(12)多行函数

Discuz代码片段

常见的代码片段