根据某个字段去重 根据另一个字段排序的一个SQL
背景:
一张表 有 name , crt_time , work_sts 三个字段
这张表里存在这样的数据
'a', '2018-12-18 21:37:24', '未'
'a', '2018-12-19 09:37:24', '完'
'a', '2018-12-19 21:37:24', '未'
'b', '2018-11-18 21:37:24', '完'
'b', '2018-11-19 20:37:24', '完'
'b', '2018-11-20 09:37:24', '完'
'c', '2018-11-18 21:47:24', '完'
'c', '2018-11-19 20:57:24', '完'
'c', '2018-11-20 09:33:24', '未'
'd', '2018-12-18 21:17:24', '未'
'd', '2018-12-19 09:17:24', '完'
'd', '2018-12-19 21:17:24', '完'
现在需要根据 name 去重 要求如下:
1. 同一个name下 work_sts没有 未 的时候 取 完 数据里 crt_time 最大的那条数据
2. 同一个name下 work_sts有一个 未 取 未 这条数据
3. 同一个name下 work_sts有多个 未 取 未 数据里 crt_time 最大的那条数据
答案:
SELECT a.*
FROM t_test a
JOIN(
SELECT col1,MAX(col2) col2
FROM t_test
WHERE col3='未'
GROUP BY col1
HAVING SUM(IF(col3='未',1,0)) > 0
)b
WHERE a.col1 = b.col1 AND a.col2 = b.col2
UNION
SELECT a.*
FROM t_test a
JOIN (
SELECT col1,MAX(col2) col2
FROM t_test
GROUP BY col1
HAVING SUM(IF(col3='未',1,0)) = 0
)c
WHERE a.col1 = c.col1 AND a.col2 = c.col2
ORDER BY col1
CREATE TABLE `t_test` (
`col1` varchar(32) DEFAULT NULL COMMENT 'col1',
`col2` varchar(128) DEFAULT NULL COMMENT 'col2',
`col3` varchar(64) DEFAULT NULL COMMENT 'col3',
`id` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('a', '2018-12-18 21:37:24', '未', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('a', '2018-12-19 09:37:24', '归', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('a', '2018-12-19 21:37:24', '未', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('b', '2018-11-18 21:37:24', '归', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('b', '2018-11-19 20:37:24', '归', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('b', '2018-11-20 09:37:24', '归', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('c', '2018-11-18 21:47:24', '归', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('c', '2018-11-19 20:57:24', '归', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('c', '2018-11-20 09:33:24', '未', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('d', '2018-12-18 21:17:24', '未', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('d', '2018-12-19 09:17:24', '归', '');
INSERT INTO `t_test` (`col1`, `col2`, `col3`, `id`) VALUES ('d', '2018-12-19 21:17:24', '归', '');
根据某个字段去重 根据另一个字段排序的一个SQL的更多相关文章
- mysql DISTINCT根据某字段去重同时查出其他字段
mysql有个关键字distinct用来去重的,但是使用时只能放在查询字段的最前边,如: SELECT DISTINCT user_id,age FROM t_user;若不是放在最前边,如:SELE ...
- MySql 去重且指定某字段在前的排序方法
今天遇到一个棘手的数据查找并去重的问题: 情况: 1.取出数据库中的数据: 2.同一字段A,不同情况<值,如A值为:a1,a2>下取出的其他数据可能相同: 3.将2情况下的重复数据< ...
- sql针对某一字段去重,并且保留其他字段
今天客户提了一个小需求,希望我能提供一条sql语句,帮助他对数据中 _field 这个字段的值去重,并且保留其他字段的数据.第一反应是select distinct,但这种语句在对某个字段去重时,无法 ...
- DataTable根据字段去重
DataTable根据字段去重 最近需要对datatable根据字段去重,在网上搜了很多,找到了一个方法,代码如下 public static DataTable DistinctSomeColumn ...
- oracle 多字段去重查询
oracle 多字段去重查询 CreationTime--2018年6月29日15点11分 Author:Marydon 1.情景展示 需要对表BASE_MRI_DEVICE的COMPNAME.F ...
- C#NPOI.RabbitMQ.EF.Attribute.HttpRuntime.Cache.AD域.List<T>根据指定字段去重.前端JQuery.Cache.I18N(多语言).data-xx(自定义属性)
使用NPOI 操作Excel 个人使用的电脑基本默认安装Excel 操作起来 调用Excel的组件便可.如果是一台服务器.没有安装Excel,也就无法调用Excel组件. 在此推荐第三方插件.NPOI ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- LINQ解决依据某个字段去重
想要List结果反复 的数据非常easy.仅仅要.Dinstinct()就好了 可是假设想要依据某个字段去除反复的数据,上面的方法就帮不上忙了.我们须要重写一个方法.直接上样例吧 [Serializa ...
- java steam List指定字段去重
如:角色去重处理 baseRoleList = baseRoleList.stream().collect(Collectors.collectingAndThen(Collectors.toColl ...
- List使用Stream流进行集合Collection的各种运算汇总:对BigDecimal求和,某个字段的和、最大值、最小值、平均值,字段去重,过滤等
写Java接口的朋友都知道,Java 8的更新,经常会用到过滤 list<Object> 里的数据,本文就对List使用Stream流进行集合Collection的各种运算做一个汇总! 优 ...
随机推荐
- 我的Linux操作系统的发行版是什么?版本号是什么?
可以用下面的两个命令来查看: cat /etc/*-release hostnamectl 参考资料 ============== How To Find Out My Linux Distribut ...
- 编写支持SSR的通用组件指南
原文来自:https://blog.lichter.io/posts/the-guide-to-write-universal-ssr-ready-vue-compon? utmcampaign=Vu ...
- GBK转UTF8
shell 脚本自动GBK转UTF8 for i in `find . -name "*.java"`; do iconv -f gbk -t utf-8 $i > $i.n ...
- PL/SQL学习笔记之事务
一:事务自动提交的开启与关闭 1)开启事务自动提交:则每一个INSERT,UPDATE或DELETE命令执行时,都提交一次事务. SET AUTOCOMMIT ON; 2)关闭事务自动提交:则执行到C ...
- mysql数据类型转换
--CAST(xxx AS 类型) --CONVERT(xxx,类型) --#浮点型转化为int --i='3.35' --cast(i as signed) --cast(sum(money/100 ...
- Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
Atitit 乌合之众读后感attilax总结 与读后感结构规范总结 1. 背景概览与鸟瞰overview 1 1.1. 社会背景 与 历史事件背景 与历史时间背景 1 1.2. 书籍简绍 2 1. ...
- Kafka#4:存储设计 分布式设计 源码分析
https://sites.google.com/a/mammatustech.com/mammatusmain/kafka-architecture/4-kafka-detailed-archite ...
- crawler_exa3
优化中... #! /usr/bin/env python # -*- coding:utf-8 -*- # Author: Tdcqma ''' v1.0: 由于网站结构存在变更的可能性,一旦爬虫爬 ...
- 2018年中国C++大会详细日程+报名
http://purecpp.org/detail?id=2050
- js实现根据文本下标位置添加特殊标识
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...