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

编写SQL查询校验colA与colB组合对应colC值的唯一性

你写的SQL不生效的核心原因是:你把CONCAT(A,B)和C同时作为分组依据,每个分组内的CONCAT(A,B)必然唯一,count(distinct CONCAT(A,B))的结果永远是1,自然匹配不到>1的条件。

正确写法

如果只需要找出存在异常的(A,B)组合,用以下查询即可:

SELECT A, B
FROM tab1
GROUP BY A, B
HAVING COUNT(DISTINCT C) > 1

执行后会返回(Jill, 456)这个不符合规则的组合。

如果需要拉取所有异常的明细记录,关联原表即可:

SELECT t1.*
FROM tab1 t1
JOIN (
    SELECT A, B
    FROM tab1
    GROUP BY A, B
    HAVING COUNT(DISTINCT C) > 1
) abnormal_ab ON t1.A = abnormal_ab.A AND t1.B = abnormal_ab.B

补充说明

不建议用CONCAT(A,B)的方式做组合匹配,存在字符串拼接冲突的风险(比如A为Ji、B为ll123和A为Jill、B为123的拼接结果完全相同,会导致误判),直接分组两个原始字段更稳妥。

内容的提问来源于stack exchange,提问作者sp123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:48:00