MySQL查询:为指定ID关联的缺失记录填充NULL值
解决用户-课程全组合查询需求的SQL调整方案
要实现每个用户对应wp_posts中ID为1至5的所有条目,同时在无活动记录时填充activity_started和activity_completed为NULL,你需要用交叉连接(CROSS JOIN)生成全量用户-课程组合,再通过左连接(LEFT JOIN)关联活动表,具体SQL如下:
SELECT u.*, p.*, l.activity_started, l.activity_completed FROM wp_users u -- 生成所有用户与目标帖子的全组合 CROSS JOIN ( SELECT * FROM wp_posts WHERE ID BETWEEN 1 AND 5 ) p -- 左连接活动表,保留全组合,无匹配则返回NULL LEFT JOIN wp_learndash_user_activity l ON u.ID = l.user_id -- 假设活动表的用户ID字段为user_id,需根据实际表结构调整 AND p.ID = l.post_id; -- 假设活动表的帖子/课程ID字段为post_id,需根据实际表结构调整
关键逻辑说明:
CROSS JOIN会将wp_users中的每一条用户记录,与子查询中筛选出的ID1-5的帖子记录进行全匹配,生成所有可能的用户-课程组合,这是实现全量展示的核心。LEFT JOIN确保即使某个用户没有对应课程的活动记录,也会保留该用户-课程组合,同时活动相关字段自动填充为NULL。- 注意:如果你的
wp_learndash_user_activity表中关联用户和课程的字段名不是user_id和post_id,请替换为实际字段名(比如可能是user_id和course_id)。
内容的提问来源于stack exchange,提问作者Bobby S
相关产品推荐
相关产品推荐

