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

如何通过单条SQL查询按规则为支付记录分配分类外键

可以用单条SQL实现需求

你可以通过关联规则表并结合条件匹配,用单条SQL直接得到带分类ID的支付记录。以下是实现代码:

SELECT 
    p.id,
    p.title,
    p.recipient,
    p.amount,
    COALESCE(
        (SELECT arc.category_id
         FROM assign_rule_category arc
         JOIN assign_rule ar ON arc.assign_rule_id = ar.id
         WHERE 
             (ar.description = 'TITLE_CONTAINS' AND p.title LIKE CONCAT('%', arc.value, '%'))
             OR (ar.description = 'RECIPIENT_CONTAINS' AND p.recipient LIKE CONCAT('%', arc.value, '%'))
         LIMIT 1),
        p.category_id
    ) AS category_id
FROM payment p;

逻辑说明:

  • 规则匹配:通过JOIN关联assign_rule_category和assign_rule,根据规则类型(TITLE_CONTAINS或RECIPIENT_CONTAINS),用LIKE模糊匹配支付记录的title或recipient字段
  • 优先级处理:用COALESCE函数优先使用规则匹配到的分类ID,若没有匹配规则,则保留原payment表中的category_id(兼容后续手动设置分类的场景)
  • 去重处理:LIMIT 1保证如果某条支付记录匹配多个规则,只会返回第一个匹配的分类ID,避免结果混乱

执行这条SQL后,就能得到你期望的包含对应分类ID的支付记录列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:22:50