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

SQL查询如何为未匹配的指定用户生成带默认值的结果行

你需要先构造待查询的用户全集和帖子的全组合,再左关联阅读记录表填充状态即可,参考实现如下:

SELECT
    t1.post_id,
    t1.text,
    u.user_id,
    COALESCE(t2.read, false) AS `read`
FROM
    table1 t1
    -- 生成你需要覆盖的目标用户列表
    CROSS JOIN (
        SELECT 1 AS user_id 
        UNION ALL SELECT 2 
        UNION ALL SELECT 3
    ) u
    LEFT JOIN table2 t2 
        ON t2.post_id = t1.post_id 
        AND t2.user_id = u.user_id

逻辑说明

  • 先用子查询u构造出你要查询的1、2、3三个用户的全集,和table1做交叉连接,得到「每个帖子对应每个目标用户」的全量基础行,你当前示例里只有1条帖子,所以会先生成3行基础数据,user_id分别对应1、2、3
  • 再用LEFT JOIN关联table2阅读记录表,只有同时匹配post_id和user_id的行才能拿到真实的read值,无匹配的行read字段会返回NULL
  • 最后通过COALESCE函数把NULL值替换为默认的false,就能得到你预期的结果

如果你的用户ID是存储在独立的用户表中,也可以把子查询u替换为从用户表筛选的逻辑,比如SELECT user_id FROM user WHERE user_id IN (1,2,3),后续调整查询的用户范围会更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:39:02