当我执行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;
答案 0 :(得分: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;
答案 1 :(得分:0)
因为您使用了左连接。
如果您想要isuser=1
的数据,请使用INNER JOIN
或过滤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;
作为补充说明,请勿使用SELECT *
,明确说明您的列。