【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 值。
相关推荐
Dxy12393102168 分钟前
MySQL的UPPER函数介绍
数据库·mysql
倔强的石头_10 分钟前
KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
数据库
yuezhilangniao35 分钟前
mysql mogoDB pg redis-四大数据库选型-数据库对比大白话指南
数据库·redis·mysql
一 乐1 小时前
医疗保健|医疗养老|基于Java+vue的医疗保健系统(源码+数据库+文档)
java·前端·数据库·vue.js·毕设
m0_748248022 小时前
Redis 简介与安装指南
数据库·redis·缓存
Elastic 中国社区官方博客7 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
编程爱好者熊浪9 小时前
两次连接池泄露的BUG
java·数据库
TDengine (老段)10 小时前
TDengine 字符串函数 CHAR 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
qq74223498411 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
姚远Oracle ACE11 小时前
Oracle 如何计算 AWR 报告中的 Sessions 数量
数据库·oracle