【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 值。
相关推荐
粉嘟小飞妹儿1 分钟前
php怎么使用Ice RPC通信_php如何实现跨语言微服务远程调用
jvm·数据库·python
m0_377618232 分钟前
C#怎么实现批量邮件发送 C#如何用MailKit批量发送个性化邮件和HTML格式邮件【网络】
jvm·数据库·python
biwenjun9992 分钟前
chatBI构建思路拆解(重点是元数据增强)
java·数据库·人工智能
m0_640309303 分钟前
宝塔面板如何配置多版本PHP共存_针对不同站点指定环境
jvm·数据库·python
weixin_586061466 分钟前
Go 中实现无侵入式方法级执行时间监控的完整实践指南
jvm·数据库·python
NotFound4866 分钟前
golang如何实现时间格式化_golang时间格式化方法详解
jvm·数据库·python
DaqunChen6 分钟前
PHP怎么合并数组_array_merge函数指南【指南】
jvm·数据库·python
InfinteJustice6 分钟前
如何在 Laravel Excel 导入时检测并阻止重复列值
jvm·数据库·python
2301_777599377 分钟前
Quill 编辑器光标意外跳转至顶部的解决方案
jvm·数据库·python
weixin_586061467 分钟前
Quill 编辑器光标跳转到顶部的解决方案
jvm·数据库·python