如何在同一视图中基于相等值排除行数据?

How to exclude row data based on equal values in same view?

给个简单的看法

reports.uid,
reports.mail,
reports.jobcode,
reports.jobcodedescr,
reports.regionname,
reports.supervisorid,
reports.supemail

FROM
reports_accredit_fscore_allmanagers

如何排除某行的 uid 不在 supervisorid 列表中的行?我尝试了几种上下文,但我一直在获取整个列表。现在,该视图有 440 名员工和 113 名主管。所以我应该得到的列表应该是 327 但没有看到它。

有几种方法可以做到这一点。这是使用 not exists 的一个选项:

select uid, mail, jobcode, jobcodedescr, regionname, supervisorid, supemail
from reports_accredit_fscore_allmanagers r
where not exists (
    select 1
    from reports_accredit_fscore_allmanagers r2
    where r.uid = r2.supervisorid
)

这是一个 outer join / null 检查:

select r.uid, r.mail, r.jobcode, r.jobcodedescr, 
       r.regionname, r.supervisorid, r.supemail
from reports_accredit_fscore_allmanagers r
    left join reports_accredit_fscore_allmanagers r2 on r.uid = r2.supervisorid
where r2.supervisorid is null