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

查找同时存在于两个指定数据源的匹配账户编号SQL求助

解决方案:找出符合条件的账户编号

这里提供两种易懂的SQL写法,你可以根据自己的数据库环境选择:

方法1:自连接匹配(直观易懂)

这种方法是把表和自己做关联,分别匹配abc和xyz数据源的记录:

SELECT DISTINCT t1.`account number`
FROM Transaction t1
JOIN Transaction t2 
  ON t1.`account number` = t2.`account number`
  AND t1.`date` = t2.`date`
  AND t1.`sales` = t2.`sales`
  AND t1.source = 'abc'
  AND t2.source = 'xyz';

代码说明:

  • t1和t2是给同一张表起的别名,分别代表abc和xyz数据源的记录
  • JOIN条件确保两个数据源的账户编号、日期、销售额完全一致
  • DISTINCT用来避免同一个账户编号被重复输出

方法2:分组统计(简洁高效)

通过分组筛选同时存在两个数据源的记录:

SELECT `account number`
FROM Transaction
WHERE source IN ('abc', 'xyz')
GROUP BY `account number`, `date`, `sales`
HAVING COUNT(DISTINCT source) = 2;

代码说明:

  • 先筛选出仅来自abc和xyz的记录
  • 按账户编号、日期、销售额分组,每组代表一组完全匹配的记录组合
  • HAVING COUNT(DISTINCT source) = 2确保每组同时包含abc和xyz两个数据源

排查未得到预期结果的常见原因

如果执行后没得到想要的结果,检查这几点:

  • 字段名格式:如果字段名有空格(比如account number),必须用反引号(MySQL)或方括号(SQL Server)包裹,否则数据库会识别错误
  • 数据一致性:
    • 日期字段:确认两个数据源的日期格式完全一致(比如2024-05-20和2024/05/20会被判定为不同)
    • 销售额字段:如果是字符串类型,100和100.0会被视为不同;如果是数值类型,要确保精度一致
  • 数据源拼写:检查source字段的值是否准确,有没有大小写错误(比如ABC或Xyz),可以改成LOWER(source) IN ('abc', 'xyz')统一大小写匹配
  • 重复记录:如果同一个数据源下有重复的账户+日期+销售额记录,不会影响结果,但自连接方法需要保留DISTINCT去重

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:32:14