答案 0 :(得分:2)
因为在mysql body {
counter-reset: objgen;
}
.general::before {
content: counter(objgen) ;
counter-increment: objgen;
}
.general {
counter-reset: objesp;
font-weight: bold;
}
.esp::before {
content: counter(objgen) "." counter(objesp);
counter-increment: objesp;
}
.esp {
font-weight: bold;
}
命令有效(例如select constant_value
将返回2)并且将返回1行。不带group by的Count()函数将折叠结果集并计算结果集中的项数。在这种情况下,将返回1行,count(*)计算该行。
答案 1 :(得分:0)
通常所有选择的形式都是SELECT [列,列上的标量计算,列上的分组计算或标量计算] FROM [表或表的连接等]
因为这允许简单的标量计算,我们可以执行类似SELECT 1 + 1 FROM SomeTable的操作,并且它将为表SomeTable中的每一行返回值为2的记录集。
现在,如果我们不关心任何表格,但只是想做我们的标量计算,我们可能想做一些像SELECT 1 + 1这样的事情。标准不允许这样做,但它是有用的,大多数数据库允许它(甲骨文不会,除非它最近改变了,至少它不习惯)。
因此,这些简单的SELECT被视为具有一个from子句,该子句指定了一个包含一行而没有列的表(当然不可能,但它可以解决问题)。因此,SELECT 1 + 1变为SELECT 1 + 1 FROM ImaginaryTableWithOneRow,它返回一行,其中一列的值为2.
大多数情况下我们都没有考虑过这个问题,我们只是习惯了这样一个事实,即明确的SELECT会给出结果,甚至不会想到必须选择一些单行的东西才能返回一个行。
在执行SELECT COUNT()时,你做了相同的SELECT COUNT()FROM ImaginaryTableWithOneRow,当然返回1.