请帮我处理以下MySQL查询,它连接两个表(A和B):
SELECT * from A
left join B on A.sid = B.sid
where (rCode = 1 Or rCode = 2 Or rCode = 3 Or rCode = 5)
AND (rYear = 2011 or rYear is null)
Run Code Online (Sandbox Code Playgroud)
roleCode
是表A rYear
中的字段,是表B中的字段
结果集不符合预期.仅返回185行,但表A中有629行与where条件匹配.不应该在表B中没有匹配行的行返回其B字段的空值吗?
Jag*_*age 54
您不应在WHERE子句中指定rYear.这些限制了您在加入后的结果.您应该在ON子句中指定rYear以从表B中获取带有NULL的记录.
SELECT * from A
left join B
on A.sid = B.sid
AND (rYear = 2011 or rYear is null)
where (rCode = 1 Or rCode = 2 Or rCode = 3 Or rCode = 5)
Run Code Online (Sandbox Code Playgroud)