Sql 如何解释结果?
当我执行SQL时,为什么结果仍然包含isuser=1的数据:Sql 如何解释结果?,sql,database,select,join,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; 因为你使用了左连接 如果需要isuser=1的数据,请使用内部联接或中的过滤器,其中 SEL
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;
因为你使用了左连接 如果需要
isuser=1
的数据,请使用内部联接
或中的过滤器,其中
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*
,而是明确说明您的列 因为您使用了左连接
如果需要isuser=1
的数据,请使用内部联接
或中的过滤器,其中
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*
,而是明确说明您的列 这是因为您使用了左联接
——它从第一个表中获取所有记录,即使联接的表中没有匹配的记录
将您的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;
这是因为您使用了
左联接
——它从第一个表中获取所有记录,即使联接的表中没有匹配的记录
将您的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;