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

MySQL技术需求:筛选无已发布帖子用户的所有帖子条目

嗨,我来帮你解决这个SQL查询问题!你要找的是从未发布过帖子的用户的所有帖子,也就是那些user_id对应的所有条目里没有is_published=1记录的所有内容对吧?给你两种实用的解法:

解法1:子查询排除已发布用户

这种写法最直观,先找出所有有过发布记录的用户ID,再筛选出不在这个列表里的用户的所有帖子:

SELECT *
FROM posts
WHERE user_id NOT IN (
    SELECT DISTINCT user_id
    FROM posts
    WHERE is_published = 1
);

逻辑说明

  • 内层子查询SELECT DISTINCT user_id FROM posts WHERE is_published = 1会得到所有发布过帖子的用户ID(比如你的例子里是2133、4555)
  • 外层查询通过user_id NOT IN (...)排除这些用户,剩下的就是从未发布过帖子的用户(9332、3221)的全部帖子,正好是你要的id=1、3、7、8的条目

解法2:LEFT JOIN筛选无发布记录的用户

如果你的数据库在处理大表时对子查询性能不太友好,可以试试左连接的方式:

SELECT p.*
FROM posts p
LEFT JOIN (
    SELECT DISTINCT user_id
    FROM posts
    WHERE is_published = 1
) published_users ON p.user_id = published_users.user_id
WHERE published_users.user_id IS NULL;

逻辑说明

  • 先把原表posts和“有发布记录的用户表”做左连接,所有用户都会被保留,有发布记录的用户会匹配到对应的user_id,没有的则会显示NULL
  • 通过WHERE published_users.user_id IS NULL就能筛选出那些没有发布记录的用户的所有帖子,结果和第一种方法完全一致

这两种方法都能满足你的需求,你可以根据自己数据库的实际情况选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:02:47