如何将MySQL子查询转换为JOIN以获取未屏蔽的MatchId
用JOIN实现未被屏蔽的Match_Id查询
可以使用LEFT JOIN结合IS NULL条件替代原有的NOT IN子查询,实现相同需求:
SELECT M.Match_Id FROM match M LEFT JOIN block B ON M.Match_Id = B.Block_Id AND B.Block_Id IS NOT NULL WHERE M.User_Id = '1' AND B.Block_Id IS NULL;
逻辑说明:
- 通过
LEFT JOIN将MATCH表与BLOCK表按Match_Id和Block_Id关联,同时过滤掉BLOCK表中Block_Id为NULL的记录(与原查询子查询条件对应) - 利用
B.Block_Id IS NULL筛选出BLOCK表中无对应屏蔽记录的Match_Id,再叠加用户ID为'1'的条件,得到目标结果
内容的提问来源于stack exchange,提问作者Tanish Gupta
相关产品推荐
相关产品推荐

