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

如何用SQL实现用一张表的字段值批量统计另一张表匹配记录数

实现方案

直接通过两表关联+分组聚合即可实现,无需手动拼接多条查询语句,通用SQL写法如下:

SELECT
  a.name,
  COUNT(DISTINCT bt.id) AS match_count
FROM
  accounts a
LEFT JOIN
  -- 请替换为你实际需要统计的业务表名称
  business_table bt 
  ON bt.code LIKE CONCAT('%', a.name, '%')
GROUP BY
  a.name
-- 可选:按匹配数量倒序排列方便查看结果
ORDER BY
  match_count DESC;

说明

  • 用LEFT JOIN关联可以保证accounts表中所有的name都出现在结果集中,即使没有匹配的业务记录也会显示统计值为0,不会遗漏数据。如果不需要展示无匹配的name,可将LEFT JOIN改为INNER JOIN过滤。
  • 关联条件用CONCAT('%', a.name, '%')动态拼接模糊匹配通配符,和你原有单条查询的%$string$%逻辑完全一致。部分数据库(如Oracle、PostgreSQL)也可替换为bt.code LIKE '%' || a.name || '%'写法,效果相同。
  • 若accounts.name中存在%、_这类SQL LIKE内置通配符,需要提前做转义处理,避免匹配结果不符合预期。
  • 若业务表数据量较大,可给code字段建立前缀索引优化查询速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:05