我有 2 个表,表 1)医生 - 具有以下属性:
- id(主键)
- 名称
- 名字
- 电话
- 蜂鸣器
表 2) 患者 - 属性为
- id(主键)
- 医生$id(来自医生表id的外键)
- 名称
- 名字
- 街道
- 城市
- 状态
- 压缩
- 电话
我的问题是如何“列出所有没有分配任何患者的医生的身份证、号码、名字和姓氏。按医生姓氏的顺序排列。
我有 2 个表,表 1)医生 - 具有以下属性:
表 2) 患者 - 属性为
我的问题是如何“列出所有没有分配任何患者的医生的身份证、号码、名字和姓氏。按医生姓氏的顺序排列。
LEFT JOIN
与NOT IN
谓词一起使用:
SELECT
d.fname,
d.lname
FROM Doctor AS d
LEFT JOIN patient AS p ON d.id = p.doctor_id
WHERE p.docutor_id IS NULL
ORDER BY d.lname;
或者:谓词,但是来自表中NOT IN
的值是不安全的,这就是我向表中添加谓词的原因:NULL
doctor_id
patient
NOT NULL
patient
SELECT
d.fname,
d.lname
FROM Doctor AS d
WHERE id NOT IN(SELECT doctor_id
FROM patient
WHERE docutor_id IS NOT NULL)
ORDER BY d.lname;
使用not exists
:
select id, fname, lname
from Doctor d
where not exists (select 1 from Patient where doctorId = d.id)