You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中按主键汇总行并根据值一致性生成布尔字段

验证重复主键下Val字段一致性判断的SQL逻辑

需求回顾

针对包含重复主键No的表格,实现以下判断逻辑:

  • 同一No对应的所有Val值完全相同时,Bool字段返回'No'
  • 同一No对应的Val存在不同值时,Bool字段返回'Yes'

示例数据与预期结果

假设原始数据如下:

NoVal
1A
1A
2B
2C
3D

预期输出结果:

NoBool
1No
2Yes
3No

验证你的SQL逻辑(假设第二个查询为以下语句)

如果你的第二个SQL查询是类似下面这种分组判断的写法:

SELECT 
  No,
  CASE 
    WHEN COUNT(DISTINCT Val) > 1 THEN 'Yes' 
    ELSE 'No' 
  END AS Bool
FROM your_table
GROUP BY No;

那这个逻辑是完全正确的,理由如下:

  1. COUNT(DISTINCT Val)会统计每个No分组下不重复的Val值数量:
    • 当所有Val值相同时(包括该No只有一条记录的情况),不重复值数量为1,触发ELSE分支返回'No'
    • 当存在至少两个不同的Val值时,不重复值数量大于1,触发THEN分支返回'Yes'
  2. 额外场景覆盖:如果Val字段包含NULL值,多数主流数据库(如MySQL、PostgreSQL)会将NULL视为一个独立的不重复值,比如某No下同时存在'A'和NULL,COUNT(DISTINCT Val)会返回2,逻辑依然能正确判断为'Yes'

内容的提问来源于stack exchange,提问作者T S Nandakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:20:04