【group by 之后去重,某个字段展示最后一次的值】sql怎么写

一、group by语句,巧用Max

实现效果:group by 之后去重,多条条件相同数据变为一条,判断多条数据的某些字段,只要有为1的就为1

sql 复制代码
SELECT 
  id,
  name, 
  CASE WHEN MAX(status1) = 1 THEN 1 ELSE 0 END AS status1,
  CASE WHEN MAX(status2) = 1 THEN 1 ELSE 0 END AS status2,
  CASE WHEN MAX(status3) = 1 THEN 1 ELSE 0 END AS status3
FROM 
  your_table
GROUP BY
  id, name;

二、巧用SUBSTRING_INDEX+GROUP_CONCAT

实现效果:还有某个字段,为字符串格式,取最近一条的那一条。

sql 复制代码
SELECT
  id,
  name,
  CASE WHEN MAX(status1) = 1 THEN 1 ELSE 0 END AS status1,
  CASE WHEN MAX(status2) = 1 THEN 1 ELSE 0 END AS status2,
  CASE WHEN MAX(status3) = 1 THEN 1 ELSE 0 END AS status3,
  SUBSTRING_INDEX(GROUP_CONCAT(field_str ORDER BY id DESC), ',', 1) AS field_str
FROM
  your_table
GROUP BY
  id, name;
  1. 在 GROUP_CONCAT 函数中,我们改为按 id 字段降序排列;
  2. 使用 SUBSTRING_INDEX 函数来提取第一个值,也就是 id 最大的那条记录对应的 field_str 值。
相关推荐
APItesterCris21 分钟前
构建弹性数据管道:利用淘宝商品 API 进行流式数据采集与处理
linux·数据库·windows
九河云26 分钟前
TOS + 数字孪生:集装箱码头的智能进化密码
大数据·服务器·网络·数据库·数字化转型
手握风云-1 小时前
MySQL数据库精研之旅第十九期:存储过程,数据处理的全能工具箱(二)
数据库·mysql
孟意昶1 小时前
Doris专题17- 数据导入-文件格式
大数据·数据库·分布式·sql·doris
你可以永远相信功夫熊猫1 小时前
金蝶云·星瀚 | 生产制造成本核算终极实操手册(从0到1,含两套完整案例)
数据库·erp
Thepatterraining1 小时前
MySQL零基础教程:DDL/DCL/DML详解,从建库到存储过程一篇搞定!
数据库·sql·mysql
想ai抽1 小时前
深入starrocks-怎样实现多列联合统计信息
java·数据库·数据仓库
Y4090012 小时前
MySQL中的“事务”
数据库·mysql
Raymond运维2 小时前
MySQL源码编译安装
linux·数据库·mysql
清风细雨_林木木2 小时前
MacOS本地数据库搭建
数据库·macos