如果列等于行,SQL选择行

时间:2019-12-09 22:43:01

标签: mysql sql database row multiple-columns

我有这张桌子:

var str = XYZ;
$('#9MMM > label').each(function() {
    var $this = $(this);
    if ($this.text() === str) {
        $this.remove();
    }
});

基本上,我试图找到没有被任何人指导但却是某人的指导者的人。并显示其NINumber,其名字的首字母和姓氏。

例如,在我的餐桌上,我应该让这个人与之相伴

| NINumber  | fname | lname   | mentored_by |
---------------------------------------------
| DD1199XYZ | John  | Smith   | DD234CD1X   |
| DD0094CYY | Barry | Gibbson | DD0094CYY   |
| DD234CD1X | Mike  | Hammer  | NULL        |
| AB2323CYA | Peter | Falk    | NULL        |

这是我到目前为止尝试过的:

| DD234CD1X | Mike  | Hammer  | NULL        |

这基本上显示了没有任何人指导的人,但是我不知道我该如何证明一个人也是指导者。

2 个答案:

答案 0 :(得分:1)

您可以将exists与相关的子查询一起使用:

select t.*
from Hospital_Doctor t
where 
    t.mentored_by is null
    and exists (
        select 1 from Hospital_Doctor t1 where t1.mentored_by = t.NINumber
    )

Demo on DB Fiddle

NINumber  | fname | lname  | mentored_by
:-------- | :---- | :----- | :----------
DD234CD1X | Mike  | Hammer | null       

答案 1 :(得分:1)

虽然您可以使用exists,但是INNER JOIN会更快

select d.NINumber, SUBSTRING(d.fname, 1, 1) AS init, d.lname
from Hospital_Doctor d
inner join Hospital_Doctor md on md.mentored_by = d.NINumber
where d.mentored_by is null;