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

MySQL联表查询如何按规则过滤跨表存在列值的匹配行

符合规则的MySQL查询实现

核心逻辑说明

直接将三条业务过滤规则映射为SQL判断条件,使用NOT EXISTS替代NOT IN,避免关联字段存在NULL值时出现的判断异常问题。

完整查询语句

SELECT t.name, t.ta_over_amount, v.over_amount, v.signature
FROM ta02 t
LEFT JOIN voucher v ON t.t_key = v.v_key
WHERE
  -- 规则①:当前行左右表金额不相等
  t.ta_over_amount <> v.over_amount
  -- 规则②:当前右表金额不存在于同关联键的左表金额集合
  AND NOT EXISTS (
    SELECT 1 FROM ta02 t2
    WHERE t2.t_key = t.t_key
      AND t2.ta_over_amount = v.over_amount
  )
  -- 规则③:当前左表金额不存在于同关联键的右表金额集合
  AND NOT EXISTS (
    SELECT 1 FROM voucher v2
    WHERE v2.v_key = t.t_key
      AND v2.over_amount = t.ta_over_amount
  );

逻辑校验

  • 针对首个测试场景:仅保留logbasex关联键下phi的15.00与itsme的14.00匹配行,完全匹配预期结果
  • 针对补充测试场景:仅保留gogo关联键下anh的100.00与blue的110.00匹配行,完全匹配预期结果
  • 所有金额相等的匹配行、存在于对方同键金额集合的行都会被自动过滤,左连接产生的右表字段为NULL的未匹配行也会因金额比较返回UNKNOWN被自动排除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 07:24:05