1

当我执行 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;
4

2 回答 2

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;
于 2013-09-11T10:59:12.403 回答
0

因为您使用了左连接。

如果您想要数据,请在 a 上isuser=1使用INNER JOINor 过滤器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 *, 明确声明您的列。

于 2013-09-11T10:58:42.227 回答