sql – SELECT COUNT(*);

前端之家收集整理的这篇文章主要介绍了sql – SELECT COUNT(*);前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数据库 database1,里面有两个表(表1,表2).

表1中有3行,表2中有2行.现在,如果我执行以下SQL查询SELECT COUNT(*);在database1上,输出为“1”.

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

两个表的定义如下.

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

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

解决方法

通常所有选择的形式为SELECT [列,列上的标量计算,列上的分组计算或标量计算] FROM [表或表的连接等]

因为这允许简单的标量计算,所以我们可以执行类似于SELECT 1 1 FROM SoMetable的操作,并且它将为表SoMetable中的每一行返回值为2的记录集.

现在,如果我们不关心任何表,但只是想做我们的标量计算,我们可能想要做一些像SELECT 1 1.这是标准不允许的,但它是有用的,大多数数据库允许它(除非最近改变了Oracle,否则Oracle不会这样做,至少它曾经没有改变过.

因此,这样的裸SELECT被视为具有一个from子句,该子句指定了一行没有列的行(当然不可能,但它确实有效).因此,SELECT 1 1变为SELECT 1 1 FROM ImaginaryTableWithOneRow,它返回单行,其中单个列的值为2.

大多数情况下,我们没有考虑到这一点,我们只是习惯了这样一个事实:裸的SELECT给出了结果,甚至没有想到必须选择一行来返回一行这一事实.

在执行SELECT COUNT(*)时,你做了相同的SELECT COUNT(*)FROM ImaginaryTableWithOneRow,当然返回1.

猜你在找的MsSQL相关文章