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;
これは、結合されたテーブルに一致するレコードがない場合でも、最初のテーブルからすべての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;
左結合を使用したためです。
データが必要な場合は、またはフィルターをisuser=1使用しますINNER JOINWHERE
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 *でください。列を明示的に指定してください。