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

如何用HAVING COUNT筛选重复结婚的夫妻(SQL技术问题)

解决方法

要找出重复结婚的夫妻组合,关键是按夫妻两人的身份证号配对来分组统计,而不是单独统计个人。下面分两种常见情况给出修改后的SQL:

1. 严格区分夫妻角色(妻子/丈夫的登记顺序固定)

如果你的数据里,夫妻的角色(谁是妻子、谁是丈夫)从来不会搞反,直接按cfmoglie和cfmarito一起分组,筛选出现次数超过1的组合就行:

SELECT
  cfmoglie,
  cfmarito,
  COUNT(*) AS 结婚次数
FROM matrimonio
GROUP BY cfmoglie, cfmarito
HAVING COUNT(*) > 1;

2. 不区分夫妻角色(A和B、B和A算同一组合)

如果存在登记时夫妻角色颠倒的情况(比如某次把A记成丈夫,另一次记成妻子),就得先把两人的身份证号按固定顺序排列,再分组统计:

SELECT
  -- 把较小的身份证号放前面,保证同一夫妻的组合唯一
  LEAST(cfmoglie, cfmarito) AS 一方身份证号,
  GREATEST(cfmoglie, cfmarito) AS 另一方身份证号,
  COUNT(*) AS 结婚次数
FROM matrimonio
GROUP BY LEAST(cfmoglie, cfmarito), GREATEST(cfmoglie, cfmarito)
HAVING COUNT(*) > 1;

补充说明

  • 第一种写法适合数据规范、夫妻角色从未颠倒的场景,直接用原始的角色组合统计重复次数。
  • 第二种写法通过LEAST和GREATEST函数统一组合顺序,避免因登记时角色颠倒导致同一夫妻被当成不同组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:15:34