【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 值。
相关推荐
奥顺互联V13 分钟前
泛目录程序:无需数据库的高效站群解决方案
数据库·搜索引擎·php
17´27 分钟前
Qt从入门到入土(十) -数据库操作--SQLITE
数据库·c++·qt·sqlite
多敲代码防脱发1 小时前
数据库MySQL原理(相关程序)
数据库·mysql
Future_yzx1 小时前
分布式存储学习——HBase表结构设计
数据库·oracle
java_python源码2 小时前
【2025】基于python+django的慢性病健康管理系统(源码、万字文档、图文修改、调试答疑)
数据库·python·django
千益2 小时前
【数据库】10分钟学会MySQL的增删改查:数据库、表、表记录操作指南
数据库·mysql
codingPower2 小时前
MySQL 批量插入 vs 逐条插
数据库·mysql
4647的码农历程2 小时前
MySQL -- 表的约束
数据库·mysql·oracle
20242817李臻2 小时前
课上测试:MIRACL共享库使用测试
linux·数据库
道法自然,人法天2 小时前
SpringDataRedis存储Redis的数据序列化
数据库·redis·缓存