mysql分组查询只获取第一条

接到一个需求:
需要获取协议表里所有供应商对应最新的采购员。
由于协议表里供应商的协议会有多个,可能采购员也不是同一个,所以需要做到聚合、筛选才能达到效果.

-- 外层查询:聚合筛选的结果
select
aaa,
bbb,
-- 子查询:查询某个供应商最新的采购员
(
select
ccc
from
contract
order by create_date desc
limit 1
)
from
contract
group

以上是错误示范!
(没有索引的)子查询或者表的自连接会很慢,数据稍微多一点直接超时。
所以我取了个巧:
先根据供应商和创建时间进行排序。外层嵌套查询来进行聚合,聚合后的第一条数据便是我需要的。最后对聚合的数据进行处理即可。
以下为示范SQL:

SELECT
tmp.company_num,
tmp.company_name,
SUBSTRING_INDEX(GROUP_CONCAT(tmp.purchase_agent),',',1)AS purchase_agent
FROM(SELECThc.company_num,hc.company_name,spch.creation_date,hpa.purchase_agent_nameFROMpc_header spchWHEREspch.company_id = 1ORDER BY hc.company_num ASC,spch.creation_date DESC
)tmp
GROUP BY
tmp.company_num,
tmp.company_name

使用了这个不太常见的字符串处理函数:
substring_index(被截取字段,分隔符,关键字出现的次数)

mysql分组查询只获取第一条相关推荐

  1. php mysql只获取一条数据_php mysql 查询只返回第一条数据

    php mysql 查询只返回第一条数据 $search = mysql_query("select * from `info`"); $search = mysql_fetch_ ...

  2. MySQL分组查询,获取分组后数据

    MySQL分组查询,获取分组后数据 MySQL分组查询,将其它列的数据,合并到一行展示,可以设置去重,设置去重,设置排序,截取指定条数 创建表结构 CREATE TABLE `author_info` ...

  3. MySQL去重查询只保留一条最新的记录

    需求:MySQL去重查询只保留一条最新的记录 文章目录 易错的写法 正确的写法-1 正确的写法-2 正确的写法-3 易错的写法 表结构与初始数据如下SQL文件: -- MySQL dump 10.13 ...

  4. ORACLE分组排序后获取第一条和最后一条值

    ORACLE分组排序后获取第一条和最后一条值 参考链接 实践 后记 参考链接 ORACLE分组排序后获取第一条和最后一条值 实践 wx_user的手机号有部分有问题,发生了串登录.原本一个用户对应一个 ...

  5. mysql去重查询只留一条最新的

    mysql查询到时候如何去重(指定两个条件一样的数据) 可以使用groupby以dname分组 select*fromtablegroupbydname 这样不行,,因为我还有dname一样,,但是s ...

  6. MySQL分组查询最新的一条记录

    问题描述 使用关键字 group by,和order by,但是直接在查询语句后跟上group和order会失效 举例说明:table表中的每个code最新的一条数据 失效写法: SELECT t.` ...

  7. mysql相同姓名只显示第一条_SQL中遇到多条相同内容只取一条的最简单实现方法...

    SQL中经常遇到如下情况,在一张表中有两条记录基本完全一样,某个或某几个字段有些许差别, 这时候可能需要我们踢出这些有差别的数据,即两条或多条记录中只保留一项. 如下:表timeand 针对time字 ...

  8. oracle或mysql分组查询并且获取前3条排序后的数据

    因为这个需求,所以百度找到了对于不同数据库的两种写法并附带上自己的浅显的理解,如果大家有更好的理解的方式或者更好的写法,请在评论处奉上您的想法,再次拜谢了 mysql : select a.* fro ...

  9. Mysql 分组查询取max 那条记录其他字段

    需求描述: 现有有需求要按类型分组,查询出每一分组最近的一条记录,返回字段包含id,定时任务执行时间(start_time)和任务id(job_id). SELECT id, MAX(start_ti ...

最新文章

  1. nuke linux 插件,Nuke 插件:镜头光晕 Optical Flares v1.0.86(含预设)Win/Mac/Linux
  2. jedate-开始使用一款好用的时间插件
  3. linux mysql 删除表脚本_linux shell脚本自动删除mysql表前3个月的数据
  4. qt中如何模拟按钮点击_如何快速在 Shopify 中加入按钮
  5. 作者:桑健(1989-),男,中国科学院北京基因组研究所生命与健康大数据中心博士生...
  6. oracle 列 连续,sql 查寻某列连续的几个值是否相同
  7. C语言---链表的创建
  8. BZOJ 1024: [SCOI2009]生日快乐
  9. 样本修改 sample_如何在R中使用sample()获取样本?
  10. pad 迅雷 bt php_iOS永久版迅雷来了 BT、磁力链下载最全教程收好
  11. SAP 上线 新旧科目映射 辅助核算
  12. 《编程人生》中15业界传奇人物介绍
  13. Linux驱动开发: 杂项字符设备
  14. 简述计算机组装的具体流程,自己动手组装电脑详细步骤【图文】
  15. Pixelmator Pro比肩Photoshop,专业的图像处理软件,是真的吗?
  16. python PIL库中的getpixel函数
  17. 谷歌57版本设置浏览器编码
  18. Race_Condition_Vulnerability
  19. 用U盘安装系统完全教程
  20. java-php-python-医院挂号系统计算机毕业设计

热门文章

  1. matlab分离实部虚部,c – 如何在Eigen3库中有效地提取复杂矩阵的实部/虚部?
  2. 云安全数据备份_确保您的业务数据备份安全的6个技巧
  3. golang string与int int64相互转换
  4. matlab初学者快速入门大全
  5. maven项目报错:Could not find artifact com.syy:****:jar:1.0-SNAPSHOT
  6. bim技术的发展趋势是哪些方向?
  7. Antimalware Service Executable 高内存的处理办法,亲测有效
  8. 什么是SRM?SRM是什么软件?小白1分钟搞懂SRM
  9. 技术文章(自动答疑系统)
  10. 合同的收据和发票的区别