MySQL到底有几个张三之——查询zhangsan和zhangSan问题

本文探讨了MySQL中大小写敏感性问题,通过实例展示了在'zhangsan'查询中的混淆,并揭示了如何避免查询结果的歧义。重点讲解了如何正确处理重复名字和使用GROUP BY with HAVING子句来筛选特定情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道 mysql是不区分大小写的

但是遇到都是‘zhangsan’时候,会不会懵了呢

假设插入这样一张表,表里到底有几个张三 
create table test5(
    id int,
    name varchar(10)
);
select * from test5;
insert into test5 values(1010,'李四'),
                         (1006,'王五'),
                         (1008,'张三'),
                         (1012,'张三'),
                         (1011,'李四'),
                         (1013,'赵六'),
                         (null,'zhangSan'),
                         (null,'zhangsAN'),
                         (null,'zhangsan'),
                         (null,'Zhangsan');

查询结果是这样:

select count(*), name from test5 group by name ;

在这里插入图片描述
一共有2个李四,一个王五,2个张三,1个赵六,4个zhangSan,注意,虽然这边有4个zhangsan,显示哪个呢?默认是显示第一个zhangsan
因此当我们从这张表查询名字不为空且数量大于1时候

SELECT  count(*),NAME FROM test5 where name is not null group by name having count(*) >1;

其结果是
在这里插入图片描述

SELECT * FROM test5 WHERE NAME IN(
SELECT NAME FROM test5 where name is not null group by name having count(*) >1);

在这里插入图片描述
在显示信息的时候就会把4个zhangsan都显示出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值