目录
题目
情况一
准备数据
分析数据
情况二
准备数据
实现一
题目
单一数字 是在 MyNumbers
表中只出现一次的数字。
找出最大的 单一数字 。如果不存在 单一数字 ,则返回 null
。
情况一
准备数据
## 创建库
create database db;
use db;## 创建表
Create table If Not Exists MyNumbers (num int)## 向表中插入数据
Truncate table MyNumbers
insert into MyNumbers (num) values ('8')
insert into MyNumbers (num) values ('8')
insert into MyNumbers (num) values ('3')
insert into MyNumbers (num) values ('3')
insert into MyNumbers (num) values ('1')
insert into MyNumbers (num) values ('4')
insert into MyNumbers (num) values ('5')
insert into MyNumbers (num) values ('6')
分析数据
单一数字有 1、4、5 和 6 。
6 是最大的单一数字,返回 6 。
with t1 as (select if(count(num)=1,num,null) cn from mynumbersgroup by num
)select max(cn) num from t1
;
说明:使用if函数将count(num)>1设置为null,其余正常输出,最后使用max函数输出最大但艺术字;若没有单一数字,就会输出null。
情况二
准备数据
Truncate table MyNumbers
insert into MyNumbers (num) values ('8')
insert into MyNumbers (num) values ('8')
insert into MyNumbers (num) values ('3')
insert into MyNumbers (num) values ('3')
insert into MyNumbers (num) values ('3')
insert into MyNumbers (num) values ('4')
insert into MyNumbers (num) values ('4')
insert into MyNumbers (num) values ('4')
实现一
with t1 as (select if(count(num)=1,num,null) cn from mynumbersgroup by num
)select max(cn) num from t1;
select max(num) as num from MyNumbers
where num in (select num from MyNumbers group by num having count(*) =1
);
说明: 使用
HAVING COUNT(*) = 1
是一个条件用来过滤出只出现一次的组。如果主查询的
WHERE
子句中的IN
子句没有找到任何匹配的值,那么MAX(num)
将没有输入值来计算,因此会返回NULL
。