添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在对有null值的字段进行count时,发现count(1)与count(字段)得到的记录不一样。

最后在ITPUB上朋友们的帮助下,解决了。

原帖地址: http://www.itpub.net/thread-1383832-1-2.html

结论:1.count(1)与count(*)得到的结果一致,包含null值。
2.count(字段)不计算null值
3.count(null)结果恒为0

SQL> select * from  v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production

TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> desc t_product;
Name         Type         Nullable Default Comments
------------ ------------ -------- ------- --------
PRODUCT_ID   NUMBER(6)    Y
PRODUCT_NAME VARCHAR2(50) Y
LIST_PRICE   NUMBER(8,2)  Y

SQL> SELECT *  FROM t_product WHERE list_price IS NULL;

PRODUCT_ID PRODUCT_NAME    LIST_PRICE
---------- --------------- ----------
3355 HD 8GB /SI
1770 8MB Cache /NM

SQL> select count(1), count(*), count(list_price),count(null)
2    from t_product
3   where list_price is null;

COUNT(1)   COUNT(*) COUNT(LIST_PRICE) COUNT(NULL)
---------- ----------    -----------------      -----------
2             2                            0                   0

在对有null值的字段进行count时,发现count(1)与count(字段)得到的记录不一样。最后在ITPUB上朋友们的帮助下,解决了。原帖地址:http://www.itpub.net/thread-1383832-1-2.html 结论:1.count(1)与count(*)得到的结果一致,包含null值。      2.count(字段)不计算null select count (*) from table; 其实 count 函数中除了*还可以放其他参数,比如常数、主键id、 字段 ,那么它们有什么区别?各自效率如何?我们应该使用哪种方式来获取表的行数呢? 当搞清楚 count 函数的运行原理后,相信上面几个问题的答案就会了然于胸。 2. 表结构 为了解决上述的问题,我创建了一张 user 表,它有两个 字段 :主键id和name,后者可以为 null ,建表语句如下。 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_I
前一段时间在公司做一个小功能的时候, 统计 一下某种情况下有多少条数据,然后修改的问题,当时感觉很简单,写了一个如下的 SQL: SELECT COUNT (*) FROM t1 where tl.c1 not IN (SELECT t2.c1 FROM t2); 预期的结果是:有多少条数据在 t1 中,同时不在 t2 中,结果为:0,也就是 t1 中数据都在 t2 中,但是很容易就发现某些数据在 t1 中不在 t2 中,所以就感觉很奇怪,这个 SQL 看着也没问题啊。经过一番查询原来是因为 t2 的 c1 字段 包含了 null ,修改如下两种形式都可以得到预期的结果: SELECT COUN
1. count (1)与 count (*)得到的结果一致,包含 null 。 2. count ( 字段 )不计算 null 3. count ( null )结果恒为0
由于Oracle在 count ()的时候,并不计算 null (空 )部分,所以和空 结合起来进行 统计 的时候还是有一些意思。 count 这个函数应用的太频繁,有必要深究一番。              测试表格及其数据:         SQL> desc student;         Name Type Null able Default Comments
mysql count 详解 count 函数是用来 统计 表中或数组中记录的一个函数,下面我来介绍在mysql中 count 函数用法。 count (*) 它返回检索行的数目, 不论其是否包含 NULL 。 SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT (*)被优化到最快的返回速度。 mysql> SELECT COUNT (*) FROM student; COUNT (DISTINCT 字段 )这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函数返回记录的精确数量,而且非常容易访问。 对于事务型的存储引擎(InnoDB, BDB), 存
使用 COUNT 函数处理 NULL 大部分集合函数在进行计算时都去除 NULL ,但 COUNT 函数是一个例外。一般情况下当对一个包含 NULL 的列使用 COUNT 函数时,这个列中的 NULL 将会被去除掉。但是如果 COUNT 函数使用一个星号,它就会计算所有的行,而不管其中是否包含 NULL 。 如果你想使用 COUNT 函数计算包含 NULL 的列的所有行,那么需要使用IS NULL 函数(或使用NVL函数)。
好多情况下数据库默认 都有 null ,但是经过程序处理很多时候会出现,数据库 为空而不是 null 的情况。此时创建唯一索引时要注意了,此时数据库会把空作为多个重复 ,而创建索引失败,示例如下: mysql> select phone , count (1) from User group by phone; +—————–+———-+ | phone | count (1) | +—————–+———-+ | NULL | 70 | | | 40 | | +86-13390889711 | 1 | | +86-13405053385 | 1 | 步骤一中发现数据库中有70条 null 数据,有40
没有和 GROUP BY联合使用。 这样我们一般如果指定了 count ()的 字段 ,有可能会因为 字段 的数量为 null 出现返回 null 。这样我们使用orm时就会出现一些尴尬的报错。 目前测试出来的解决方式用*代替 字段 ,这样能返回0.但是影响效率。后面如果研究一下mysql有其他解决方案会更新文章。 第二种是使用group ...
可以使用 COUNT 函数和 IS NOT NULL 条件来 统计 不为空的 字段 。例如,假设要 统计 一个表中 name 字段 不为空的记录数量,可以使用以下 SQL 语句: ```sql SELECT COUNT (*) FROM table_name WHERE name IS NOT NULL ; 这个语句会返回 table_name 表中 name 不为空的记录数。如果要 统计 多个不为空的 字段 ,可以使用 AND 连接多个 IS NOT NULL 条件。例如, 统计 name 和 age 字段 都不为空的记录数量: ```sql SELECT COUNT (*) FROM table_name WHERE name IS NOT NULL AND age IS NOT NULL ; nimeide1234567890: 我的D7上安装的UniConnection1没有UseUnicode这个属性? UniConnection1.SpecificOptions.Values['UseUnicode'] := 'True'; 错误:'"UseUnicode" is not a valid option name for SQL Server UniProvider'. 百度网盘无法安装/百度云盘无法安装,一闪而过,双击无反应 qq_36743799: 我一开始以为你只是在告诉那些不会解压的人解压,直到我发现百度云真是只是个压缩包,这破b软件b事真多 sql中的Update语句为什么不能用表的别名 oksice: 对 这样写还是报错