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

MySQL查询需求:查找含指定关键词的对象并统计数量,筛选CTN超3次

解决MySQL统计含关键词且被超3个对象共享的CTN问题

看来你是想搞定两个核心需求:找出包含特定关键词的CTN,同时只保留那些被超过3个对象共享的CTN,还要统计对应对象数量对吧?我来帮你修正和完善SQL语句,一步步来:

1. 先统计符合条件的CTN及其对象数量

你之前的语句没成功用COUNT,大概率是因为没按CTN分组——直接加COUNT会把所有符合条件的对象算成一个总数,而不是按每个CTN单独统计。正确的写法应该是用GROUP BY分组,再用HAVING筛选数量超3的CTN:

SELECT o.CTN, COUNT(o.object) AS object_count
FROM object o
WHERE o.CTN LIKE '%keyword%'
GROUP BY o.CTN
HAVING COUNT(o.object) > 3;

代码解释:

  • WHERE o.CTN LIKE '%keyword%':先过滤出包含目标关键词的CTN记录
  • GROUP BY o.CTN:按CTN分组,把同一个CTN的所有对象归为一组
  • COUNT(o.object):统计每组内的对象数量(如果object字段可能为空,想用总行数的话可以换成COUNT(*))
  • HAVING COUNT(o.object) > 3:只保留对象数量超过3的CTN分组

2. 如果需要获取这些CTN对应的所有对象记录

如果你不仅要统计数,还想拿到每个符合条件的对象具体信息,可以用子查询或者JOIN关联:

方式一:用子查询(直观易懂)

SELECT o.object, o.CTN
FROM object o
WHERE o.CTN IN (
    -- 先筛选出符合条件的CTN集合
    SELECT CTN
    FROM object
    WHERE CTN LIKE '%keyword%'
    GROUP BY CTN
    HAVING COUNT(object) > 3
);

方式二:用JOIN(大表下效率更高)

SELECT o.object, o.CTN
FROM object o
JOIN (
    -- 先筛选出符合条件的CTN集合
    SELECT CTN
    FROM object
    WHERE CTN LIKE '%keyword%'
    GROUP BY CTN
    HAVING COUNT(object) > 3
) AS filtered_ctns ON o.CTN = filtered_ctns.CTN;

这两种写法都会返回所有属于“含关键词且被超3个对象共享”的CTN的对象记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:22:39