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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |