如何解释结果?

Dol*_*hin 1 sql database select join

当我执行SQL时,为什么结果仍然包含isuser = 1的数据:

SELECT * 
FROM sys_userdept
LEFT JOIN sys_deptdef sys_deptdef ON sys_userdept.nodeid=sys_deptdef.deptid
AND isuser=0 ORDER BY sys_userdept.pnodeid,sys_userdept.relationid;
Run Code Online (Sandbox Code Playgroud)

Mar*_*zek 7

这是因为你使用LEFT JOIN- 它从第一个表中获取所有记录,即使在连接的记录中没有匹配的记录.

将您的isuser=0条件转移到WHERE:

select * 
from sys_userdept
left join sys_deptdef sys_deptdef on sys_userdept.nodeid=sys_deptdef.deptid
where isuser=0
order by sys_userdept.pnodeid,sys_userdept.relationid;
Run Code Online (Sandbox Code Playgroud)