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

如何基于关联表筛选数据:查询获至少10位用户点赞的帖子

筛选获赞至少10位用户的博客帖子解决方案

没问题,我来帮你搞定这个需求——从T1(博客内容表)和T2(点赞记录表)里找出获得至少10位不同用户点赞的帖子。下面是几种实用的SQL实现方式,你可以根据数据规模和业务规则调整:

1. 先统计符合条件的帖子ID

如果只需要得到符合要求的post_id,可以直接对T2进行分组统计:

SELECT post_id
FROM T2
GROUP BY post_id
-- 用COUNT(DISTINCT)确保同一个用户多次点赞只算一次,贴合*至少10位用户*的要求
HAVING COUNT(DISTINCT user_id) >= 10;

小提示:如果你的业务规则里,同一个用户对同一篇帖子只能点赞一次(T2里不会有重复的post_id+user_id组合),那可以去掉DISTINCT,这样查询性能会更好:COUNT(user_id) >= 10

2. 获取符合条件的帖子完整内容

如果需要同时拿到帖子的内容(T1里的post字段),可以用子查询关联T1,或者直接JOIN后分组:

方法A:子查询筛选后关联(大数据量更高效)

先从T2里筛选出获赞达标的帖子ID,再和T1关联获取内容:

SELECT T1.post_id, T1.post
FROM T1
INNER JOIN (
    SELECT post_id
    FROM T2
    GROUP BY post_id
    HAVING COUNT(DISTINCT user_id) >= 10
) AS popular_posts 
ON T1.post_id = popular_posts.post_id;

方法B:直接JOIN后分组

这种写法更简洁,适合数据量不大的场景:

SELECT T1.post_id, T1.post
FROM T1
JOIN T2 ON T1.post_id = T2.post_id
GROUP BY T1.post_id, T1.post
HAVING COUNT(DISTINCT T2.user_id) >= 10;

两种方法的结果是一致的,子查询的方式在数据量较大时通常更高效,因为它先缩小了需要关联的数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:24:50