盯着这where or 终于出了点感觉

AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

有两个表

这是ucbi表

 

这是cai表

SELECT
ucbi.Userid,
ucbi.Carid,
ucbi.rechargetime,
ucbi.Datetime
FROM
usercaridbindinfo ucbi
LEFT JOIN carauthinfo cai ON cai.Receiver = '15801377365'

应该会产生如下的中间表

WHERE
ucbi.Userid = '15801377365' or ucbi.Userid = cai.Userid;

出现了重复  是不是可以想成where 循环, 错误。需要重新定义

ucbi.Userid = '15801377365' or ucbi.Userid = cai.Userid;

拆分开  ucbi.Userid = cai.Userid; 有两条符合 13311069699 和 13311069600

ucbi.Userid = '15801377365' or ucbi.Userid = 13311069699 ;

ucbi.Userid = '15801377365' or ucbi.Userid = 13311069600 ;

where 一共是两次循环, 

第一次过滤 ucbi.Userid = '15801377365' or ucbi.Userid = 13311069699 ;

第二次过滤ucbi.Userid = '15801377365' or ucbi.Userid = 13311069600 ; 

于是出现了重复. 

原文地址:https://www.cnblogs.com/zuochanzi/p/10224345.html