我有一张表,它包含4个字段
Id|Hospital| Doctor|patient 1 A D1 P11 2 B D6 P61 3 A D2 P21 4 A D1 P12 5 B D7 P71 6 B D6 P62 7 B D6 P63
医生是医院独有的。他们不在其他医院工作。患者是医生所独有的,他们不会去看任何其他医生。每家医院都有多名医生。
如果您发现每位医生都有多名患者。
现在的问题是:我怎样才能得到与每位医生相关的“只有一名患者”。它可以是记录中的任何患者。
我期待看到像这样的事情
Hospital Doctor Patient A D1 P11 A D2 P21 B D6 P61 B D7 P71
我得到了答案 从表BY BY医院,医生ORDER BY医院,医生选择医院,医生,max(患者);
如何获取上表中唯一的id,如。
id Hospital Doctor Patient 1 A D1 P11 3 A D2 P21 2 B D6 P61 5 B D7 P71
我很抱歉转发这个问题。
答案 0 :(得分:1)
尝试类似:
select Id,Hospital,Doctor,Patient
from table
where Id in (select max(t.Id) from table t group by t.Hospital,t.Doctor)
order by Hospital,Doctor;
答案 1 :(得分:0)
SELECT m.*
FROM (
SELECT (
SELECT id
FROM mytable mi
WHERE mi.hospital = md.hospital
AND mi.doctor = md.doctor
LIMIT 1
) AS first_patient
FROM (
SELECT DISTINCT hospital, doctor
FROM mytable
) md
) mo, mytable m
WHERE m.id = mo.first_patient
答案 2 :(得分:0)
你可能会把事情分成三个表:医院(有主键ID和医院字段),医生(还有其他PK,医院的外键和医生字段)和患者(还有其他PK,医生的外键和患者领域。然后你的陈述看起来像:
SELECT H.Id, H.Hospital, D.Doctor, Max(P.Patient)
FROM Hospitals H
INNER JOIN Doctors D ON H.Hospital = D.Hospital
INNER JOIN Patients P ON D.Doctor = P.Doctor
ORDER BY Hospital, Doctor