Mysql 自连接未提供准确数据

Mysql self join not giving accurate data

我有如下员工 table。

emp_id      emp_name            emp_supv
4081        Nancy Brown         0
4083        Peter Parker        4081
4055        Jacob Miller        4083
4058        Mary Ray            4083
4060        Jane Smith          4081
4061        Bob Hunter          4081
4066        Nancy Smith         0
4061        Bob Smith           4066

我想要使用关键字 Nancy 的 LIKE 查询,它应该 return 结果如下(父记录的名称类似于 Nancy 及其子记录。)。

4081        Nancy Brown       0
4083        Peter Parker      4081
4060        Jane Smith        4081
4061        Bob Hunter        4081
4066        Nancy Smith       0
4061        Bob Smith         4066

尝试使用以下查询,但它是 return 只有子记录,而不是具有 emp_supv 0

的父记录
SELECT sa.id AS id,sa.name AS Name,
sa2.id AS child_id, sa2.name AS child_name
FROM employees AS sa LEFT OUTER JOIN employees AS sa2
ON sa.emp_supv = sa2.emp_id where sa2.emp_name LIKE '%Nancy%';

尝试使用 if null on join as

    SELECT sa.emp_id AS id,sa.emp_name AS Name, 
    sa.emp_supv AS child_id, sa2.emp_name AS child_name
    FROM Employees  AS sa 
    LEFT OUTER JOIN employees AS sa2
    ON case when ifnull(sa.emp_supv,0)=0 then sa.emp_id else sa.emp_supv end= sa2.emp_id 
where sa2.emp_name LIKE '%Nancy%'

希望对您有所帮助:

SELECT DISTINCT a.* FROM employee AS a
JOIN employee AS b
ON a.emp_id=b.emp_id
WHERE a.emp_name LIKE '%nancy%' OR a.emp_supv IN (SELECT emp_id FROM employee WHERE emp_name LIKE '%nancy%')