mysql项目_MySQL项目实战总结

命令:

若库表为uft8字符集时,需转换为gbk编码再排序:【比较常见】

order by convert(columnname(排序的列名) using gbk) asc;

order by convert(columnname(排序的列名) using gbk) desc;

若库表为gbk字符集时,直接排序:

order by columnname(排序的列名) asc;

order by columnname(排序的列名) desc;

复制代码

举例:

对数据库user表的name字段按照汉字拼音排序,user表数据如下:

f26a4899e3e38dff7d6ead6145101cfb.png

查看user表的DDL:user表采用utf8字符集,中文不能按照拼音排序,需转换为gbk编码,再进行排序

eaeeb3885eae491df99c1eb9164fa795.png

对user表的name字段进行gbk编码再排序: 【升序的话,英文排在中文前面的;反之降序排在后面】

42905c6ea7f047528e222592d5c84307.png

afffef459391dbffc7a9678d0c769fc3.png

2. 查询表中重复记录/查询表中某字段值存在重复值

一般不存在表中有完全重复的记录,因为我们在设计 数据库 表时,都有主键(id),不可重复,所以常见情况都是表中某字段值存在重复。

<1> 查询某一字段存在重复值的命令:

select columnname(字段名), count(*) as count from tablename(数据库表名) group by columnname(字段名) having count > 1;

命令扩展:

select columnname(字段名), count(columnname(字段名)) as count from tablename(数据库表名) group by columnname(字段名) having count > 1 order by count desc;

复制代码

举例:

a5d30a3187401d1d52a8460680bdb8b1.png

41106a638d11f178d07fe8eb3f35e4eb.png

<2> 查询多个字段同时存在重复值的命令:

select columnname1(字段名1), columnname2(字段名2), count(*) as count from tablename(数据库表名) group by columnname1(字段名1), columnname2(字段名2) having count > 1;

复制代码

举例:

b1103e44147a3bab68c05bf006fc7bdb.png

<3> 查询某一字段存在重复值的具体行记录信息:

方式一:使用in + 子查询 【数据量大时,耗时长,效率低】

举例:先用子查询查出user表中name字段的重复值,然后在user全表中做in匹配。

2f121a2225042375c67195980707f2fc.png

方式二:使用临时表做关联查询 【建立临时表,耗时短,效率高,推荐】

举例:把user表中重复的name字段值存放临时表usertemp中,使用关联查询,查出重复name字段的具体行记录信息。

d7a87a41622ad798eb067d9dcbcd825d.png 说明:

using() 括号必须有,关联查询

join using()

表明要关联的两个表user和usertemp,关联的字段名是一致的,都为name。

<4> 查询多个字段同时存在重复值的具体行记录信息:

举例:

ddc28e03dc5c0aae372a508126fa80d4.png

3. 去除表中重复记录

表中重复记录:指的是表中完全重复的记录,即所有字段值均重复。

一般我们在设计数据库表时,都有主键id,不可重复,所以一般不存在表中记录完全重复的情况;若出现了此情况,建议先从表结构设计上查找问题,增加主键,优化表结构。

查询表中完全重复的记录命令: 【不常用】

select distinct * from tablename(数据库表名);

复制代码

后续持续更新中...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值