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

MySQL如何查询多条支付记录中仅使用过一种支付类型的用户

需求说明

现有支付记录表,存储用户每笔支付选择的支付方式,表包含两个字段:

  • user_id:用户ID
  • payment_type:支付类型
    需要查询所有支付生命周期内仅使用过同一种支付类型的用户。
    提供的示例数据如下:
user_id payment_type
1   UPI
1   NB
2   UPI
2   UPI

示例预期仅返回user_id = 2的结果:该用户所有支付记录均使用UPI,符合要求;user_id = 1使用过UPI、NB两种支付类型,不符合筛选规则。

实现方案

核心逻辑:按用户ID分组聚合,统计每个用户关联的去重后支付类型数量,筛选数量恰好为1的用户即可。
假设存储支付记录的表名为payment_record,对应MySQL查询语句如下:

SELECT user_id
FROM payment_record
GROUP BY user_id
HAVING COUNT(DISTINCT payment_type) = 1;

语句说明

  • GROUP BY user_id:将所有支付记录按用户维度划分聚合
  • COUNT(DISTINCT payment_type):计算单个用户所有支付记录中,不重复的支付类型总数
  • HAVING COUNT(DISTINCT payment_type) = 1:过滤出去重支付类型数为1的用户,即全程仅使用一种支付方式的目标用户

如果需要同时返回该用户唯一使用的支付类型,可以调整查询字段,因为分组后该用户所有记录的payment_type值一致,用聚合函数取值即可:

SELECT 
  user_id,
  MAX(payment_type) AS used_payment_type
FROM payment_record
GROUP BY user_id
HAVING COUNT(DISTINCT payment_type) = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:27:33