:-: ![](https://img.kancloud.cn/42/12/42122f743a2cda5a968ac02a6d8b3924_560x395.png)
如图中所示,`uid = 50222`的用户在`2022-11-22`这一天连续签到了10次。很明显此表没有**唯一索引**,但是代码方面的原因暂不考虑(不是咱写的)
![](https://img.kancloud.cn/92/1e/921edd252fbd306eee07c0400fb223a6_850x170.png)
### 要求:
删除重复数据,并且保留最新一条(用户一天重复有十条,删九留一)
> PS:其实不难,由于没有接触过 **SQLServer**,还有其中涉及的几个函数,所以记录一下
### 思路:
1. 查出所有重复签到的数据
2. 查出重复签到中最新的一条数据
3. 删除
~~~
-- 统计重复数据
SELECT convert(varchar(10), addtime,20) time, uid, COUNT(uid) count FROM wap_qda GROUP BY convert(varchar(10), addtime,20), uid HAVING count(uid) > 1
-- 重复签到中最新的一条数据ID
SELECT MAX(ID) ID FROM wap_qda GROUP BY convert(varchar(10), addtime,20), uid HAVING count(uid) > 1
-- 全部重复数据
SELECT a.* FROM wap_qda a, (SELECT convert(varchar(10), addtime,20) time, uid FROM wap_qda GROUP BY convert(varchar(10), addtime,20), uid HAVING count(uid) > 1) b WHERE convert(varchar(10), a.addtime,20) = b.time AND a.uid = b.uid
-- 删除
DELETE FROM wap_qda WHERE wap_qda.ID IN (SELECT a.ID FROM wap_qda a, (SELECT convert(varchar(10), addtime,20) time, uid FROM wap_qda GROUP BY convert(varchar(10), addtime,20), uid HAVING count(uid) > 1) b WHERE convert(varchar(10), a.addtime,20) = b.time AND a.uid = b.uid) AND wap_qda.ID NOT IN (SELECT MAX(ID) ID FROM wap_qda GROUP BY convert(varchar(10), addtime,20), uid HAVING count(uid) > 1 )
~~~
- **CONVERT()**
[CONVERT()](https://www.w3school.com.cn/sql/func_convert.asp) 函数是把日期转换为新数据类型的通用函数
CONVERT(data_type(length),data_to_be_converted,style)
*data\_type(length)* 规定目标数据类型(带有可选的长度)。*data\_to\_be\_converted*含有需要转换的值。*style*规定日期/时间的输出格式。
- PHP
- PHP 核心架构
- PHP 生命周期
- PHP-FPM 详解
- PHP-FPM 配置优化
- PHP 命名空间和自动加载
- PHP 运行模式
- PHP 的 Buffer(缓冲区)
- php.ini 配置文件参数优化
- 常见面试题
- 常用函数
- 几种排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常见问题
- MySQL 索引
- 事务
- 锁机制
- Explain 使用分析
- MySQL 高性能优化规范
- UNION 与 UNION ALL
- MySQL报错:sql_mode=only_full_group_by
- MySQL 默认的 sql_mode 详解
- 正则表达式
- Redis
- Redis 知识
- 持久化
- 主从复制、哨兵、集群
- Redis 缓存击穿、穿透、雪崩
- Redis 分布式锁
- RedisBloom
- 网络
- 计算机网络模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常见几种网络攻击方式
- Nginx
- 状态码
- 配置文件
- Nginx 代理+负载均衡
- Nginx 缓存
- Nginx 优化
- Nginx 配置 SSL 证书
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 进程管理
- CentOS与Ubuntu系统区别
- Java
- 消息队列
- 运维
- RAID 磁盘阵列
- 逻辑分区管理 LVM
- 业务
- 标准通信接口设计
- 业务逻辑开发套路的三板斧
- 微信小程序登录流程
- 7种Web实时消息推送方案
- 用户签到
- 用户注册-短信验证码
- SQLServer 删除同一天用户重复签到
- 软件研发完整流程
- 前端
- Redux
- 其他
- 百度云盘大文件下载
- 日常报错记录
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客户端无法连接SVN服务器,主机积极拒绝
- Python
- 基础
- pyecharts图表
- 对象
- 数据库
- PySpark
- 多线程
- 正则
- Hadoop
- 概述
- HDFS