count()和distinct关键字的使用

distinct关键字

distinct关键字是用于去除重复的数据记录。distinct使用情况:

(1)select distinct * 情况

当distinct和*号结合使用时候,只有当所有字段都一模一样时候,才会去除重复记录,只保留一条。

(2)select distinct 列名1,列名2,...,列名n 情况

当指定列名后,只有指定的列名字段全部值全部相同时候,才会去除重复的记录,只保留一条。

注意:distinct关键字只能放在所有字段前面,不能在某个字段之后。

count()函数

count()是SQL中提供的用于统计记录数量的函数。下面介绍count()函数常见用法:

  1. count(*):统计记录总数,包含重复的记录,以及为NULL或空的记录。
  2. count(1):根据第一列统计记录总数,包含重复的记录,包含为NULL或空的值。也可以使用count(2)、count(3)等等。
  3. count(列名):根据指定的列统计记录总数,包含重复的记录,不包括NULL或空的值。
  4. count(distinct 列名):根据指定的列统计记录总数,不包含重复的记录,不包括NULL或空的值。

测试案例

创建一个test数据表用于测试。

create table test (
    id varchar(15),
    a  varchar(20),
    b  varchar(20),
    c  varchar(20)
)

插入猜测是数据:

insert into test values('1', 'a11', 'b11', 'c11');
insert into test values('2',  'a22', 'b22', 'c2');
insert into test values('3',  'a33', 'b33', 'c33');
insert into test values('4',  'a44', 'b44', 'c44');
insert into test values('5',  'a55', 'b55', 'c55');
insert into test values('', 'a55', 'b55', 'b66');
insert into test values(null,  'a11', null, 'c11');
insert into test values(null, null, null, null);

最终表中数据记录如图所示:

distinct 关键字使用

select distinct * from test

由于没有完全相同的记录,所以查询出来的数据还是8条。

select distinct B from test

字段B中存在相同的值,所以distinct会去除重复的记录。

select distinct B, C from test

distinct去重多列时候,只有两条记录所有列的值全部相同才会去重。

count()函数使用

select count(*) from test  -- 8条记录

select count(1) from test -- 8条记录

select count(id) from test  -- 5条记录

由于ID列,有三个为空的值,所以count(ID)后,统计结果等于5。

select count(distinct B) from test  -- 5条记录

去重然后统计B字段这一列总记录数。由于B列有两个为空,两条记录重复,所以去重,并且去掉为空的的,最终记录总数为5。

总结

以上就是distinct关键字和count()函数的一些使用,以及需要注意的地方。

  • 22
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
计算机二级mysql数据库程序设计练习题(五)- 卷面总分:60分 答题时间:60分钟 试卷题量:30题 一、单选题(共29题,共58分) 1.要消除查询结果集中的重复值,可在SELECT语句中使用关键字______。 A.UNION B.DISTINCT C.LIMIT D.REMOVE 正确答案:B 您的答案: 本题解析: 暂无解析 2.在MySQLSQL语句中,要实现类似分页功能的效果,可使用______。 A.LIMIT B.ORDERBY C.WHERE D.TRUNCATE 正确答案:A 您的答案: 本题解析: 暂无解析 3.对于SQL查询:SELECT*FROMtbl_nameWHEREid=(SELECTidFROMtbl_name),假设该表中 包含id字段,那么该语句正确执行的条件是______。 A.该表中必须有多条记录 B.该表中必须只有一条记录 C.该表中记录数必须小于等于一条 D.此SQL语句错误,无论如何都无法正确执行 正确答案:C 您的答案: 本题解析: 暂无解析 4.设有学生表student,包含的属性有学号sno、学生姓名sname、性别sex、年龄age、所 在专业smajor。下列语句正确的是______。 A.SELECTsno,snameFROMstudentORDERBYsnameUnionSELECTSRO,snameFROMstudentWHERE smajor="CS"; B.SELECTsno,snameFROMstudentWHEREsex="M"UnionSELECTSno,shame,sexFROMstudentW HEREsmajor="CS"; C.SELECTsno,snameFROMstudentWHEREsex="M"ORDERBYsnameUnionSELECTsno,snameFRO MstudentWHEREStupor="CS"; D.SELECTsno,snameFROMstudentWIlEREsex="M"UnionSELECTsno,snameFROMstudentWHE REsmajor="CS"; 正确答案:D 您的答案: 本题解析: 暂无解析 5.学生表student如下所示:下面SQL语句中返回值为3的是______。 A.SELECTCOUNT(*)FROMstudent; B.SELECTCOUNT(所在系编号)FROMstudent; C.SELECTCOUNT(*)FROMstudentGROUPBY学号; D.SELECTCOUNT(*)FROMstudentGROUPBY学号; 正确答案:D 您的答案: 本题解析: 暂无解析 6.查找学生表student中姓名的第二个字为"t"的学生学号Sno和姓名sname,下面SQL语句 正确的是______。 A.SELECTSRO,shameFROMstudentWHEREsname="_t%"; B.SELECTSno,snameFROMstudentWHEREshameLIKE"_t%"; C.SELECTsno,shameFROMstudentWHEREsname="%t_"; D.SELECTsno,shameFROMstudentWHEREsnameLIKE"%t_"; 正确答案:B 您的答案: 本题解析: 暂无解析 7.订单表tb_order包含用户信息uid和产品信息pid等属性列,以下语句能够返回至少被 订购过三次的pid是______。 A.SELECTpidFROMtb_orderWHEREcount(pid)>3; B.SELECTpidFROMtb_orderWHEREmax(pid)>=3; C.SELECTpidFROMtb_orderGROUPBYpidHAVINGCOUNT(pid)>3; D.SELECTpidFROMtb_orderGROUPBYpidHAVINGCOUNT(pid)>=3; 正确答案:D 您的答案: 本题解析: 暂无解析 8.设有学生表student(sno,sname,sage,smajor),要从student表中检索sname字段值 第2个字是"红"的所有学生信息。以下能够按照上述条件进行检索的WHERE表达式是____ __。 A.snameLIKE"_红%" B.snameLIKE"_红_" C.snameLIKE"%红%" D.snameLIKE"%红_" 正确答案:A 您的答案: 本题解析: 暂无解析 9.设有成绩表,包含学号、分数等字段。现有查询要求:查询有3门以上课程的成绩在9 0分以上的学生学号及90分以上课程数。以下SQL语句中正确的是______。 A.SELECT学号,COUNT(*)FROM成绩WH
MDX 中的重要概念 使用成员、元组和集 (MDX) MDX 语法元素 标识符 表达式 使用多维数据集表达式和子多维数据集表达式 使用维度表达式 使用成员表达式 使用元组表达式 使用集表达式 使用标量表达式 使用空值 运算符(MDX 语法) 算术运算符 位运算符 比较运算符 串联运算符 集运算符 一元运算符 赋值运算符 函数(MDX 语法) 使用字符串函数 使用数学函数 使用逻辑函数 使用成员函数 使用元组函数 使用集函数 使用维度函数、层次结构函数和级别函数 使用存储过程 (MDX) 注释(MDX 语法) 保留关键字(MDX 语法) MDX 查询基础知识 基本 MDX 查询 EXISTING 关键字 用查询轴和切片器轴限定查询 指定查询轴的内容 指定切片器轴的内容 在简单示例中使用查询轴和切片器轴 在查询中建立多维数据集上下文 在 MDX 中生成子多维数据集 在 MDX 中生成命名集 创建查询作用域的命名集 创建会话作用域的命名集 在 MDX 中生成计算成员 在 MDX 中生成单元计算 创建和使用属性值 操作数据 修改数据 使用变量和参数 MDX 脚本编写基础知识 基本 MDX 脚本 管理作用域和上下文 错误处理 支持的 MDX MDX 语言参考 MDX 语法约定 MDX 语句参考 MDX 脚本编写语句 MDX 数据定义语句 MDX 数据操作语句 MDX 运算符参考 --(注释) -(排除) -(负) -(减) *(叉积) *(乘) /(除) ^(幂) /*...*/(注释) //(注释) :(范围) +(加) +(正) +(字符串串联) +(联合) <(小于) <=(小于或等于) (不等于) =(等于) >(大于) >=(大于或等于) AND IS NOT OR XOR MDX 函数参考 AddCalculatedMembers Aggregate AllMembers Ancestor Ancestors Ascendants Avg Axis BottomCount BottomPercent BottomSum CalculationCurrentPass CalculationPassValue Children ClosingPeriod CoalesceEmpty Correlation Count(维度) Count(层次结构级别) Count(集) Count(元组) Cousin Covariance CovarianceN Crossjoin Current CurrentMember CurrentOrdinal CustomData DataMember DefaultMember Descendants Dimension Dimensions Distinct DistinctCount DrilldownLevel DrilldownLevelBottom DrilldownLevelTop DrilldownMember DrilldownMemberBottom DrilldownMemberTop DrillupLevel DrillupMember Error Except Exists Extract Filter FirstChild FirstSibling Generate Head Hierarchize Hierarchy IIf Intersect IsAncestor IsEmpty IsGeneration IsLeaf IsSibling Item(成员) Item(元组) KPIGoal KPIStatus KPITrend KPIWeight KPICurrentTimeMember KPIValue Lag LastChild LastPeriods LastSibling Lead Leaves Level Levels LinkMember LinRegIntercept LinRegPoint LinRegR2 LinRegSlope LinRegVariance LookupCube Max MeasureGroupMeasures Median Members(集) Members(字符串) MemberToStr MemberValue Min Mtd Name NameToSet NextMember NonEmpty NonEmptyCrossjoin OpeningPeriod Order Ordinal ParallelPeriod Parent PeriodsToDate Predict PrevMember Properties Qtd Rank RollupChildren Root SetToArray SetToStr Sib

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.小朱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值