前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题count(*) 和 count(1)的区别

面试题count(*) 和 count(1)的区别

作者头像
灬沙师弟
发布2024-09-27 18:16:17
820
发布2024-09-27 18:16:17
举报
文章被收录于专栏:Java面试教程

前言

面试官:小伙子来面试啊?那你说说 select count(1) 和 select count(*)的区别吧。

回答:emmmm。。。好像就是查一下总数量,没啥区别吧。

面试官:好的,你回答的很好,今天的面试很愉快,你可以回家等消息了。 正文

从结果来说,二者的确实没啥区别。

select count(*) from tablea where xxxx=xxx

select count(1) from tablea where xxxx=xxx

那为啥会有1和*呢?不统一起来呢。

举一个例子

id

name

1

A

2

b

3

c

4

(null)

那么,select count(1) 和 select count(*) 的结果都是一样的,都是4。

再举个例子:

id

name

1

A

2

b

3

c

4

(null)

5

d

6

e

7

f

(null)

(null)

那么 select count(*)的结果是 8

select count(1)的结果是7。

是不是有点规律了。

* :他会去根绝字段去统计,会包含null的结果。他会对每一行都会去计数。

1:而1呢,他不会去关注你有什么字段,1就是他的字段,他也不会去统计非空值的数量。

那么讲到这里,还有一个就是count(字段)。

count(字段):他也是算总数,会根据某一个字段去算,排除null的情况。

一般来说,count(*) 和 count(1) ,结果基本一样。除非你有全是null的结果,不过一般,现在的业务场景很少会出现这种情况。我们一般都会去设置主键,或者设置主键递增。

现在大家应该是清楚了,count的几种情况,

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java面试教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档