我有一个patient
表和一个reference
表,如下所示
patient
表
id name
1 Doni
2 Doni
3 Doni
4 Tejo
5 Bambang
reference
表
patient_id refer_to_patient_id
1 2
2 3
3 null
refer_to_patient_id null表示患者姓名Doni被转介到另一家医院,但其提到的医院尚未创建记录。
我需要计算他们有多少病人。上述示例应返回3名患者,因为记录ID 1,2,3是同一患者。 即使对于同一患者,患者姓名也可能不同,因为他们是从不同的医院输入的。
PS:患者表实际上不是患者实体,它是医疗记录(EMR),医院可以将患者(或EMR)转诊到另一家医院,并将其计为单个患者。答案 0 :(得分:1)
虽然最初似乎需要解析完整的树,但我认为您提出的问题就像
一样简单select
count(distinct pat.id) patients
from
patient pat
left outer join reference ref on pat.id = ref.patient_id
where
ref.patient_id is null;
也就是说,只有当id
没有到另一个id
的地图时,才应计算id
。换句话说,任何没有映射值的{{1}}值都是层次结构的末尾。
答案 1 :(得分:0)
MySQL有DISTINCT
个关键字。
SELECT count(DISTINCT name)
FROM patient;