说我有两张桌子医生和病人 假设患者有两列:Id和Name 假设医生有三列:Id,npi,patientids 每个patientids字段可以具有多个患者的id值。 那么如果给出医生表的ID,我该如何查询属于医生的病人。
我尝试了以下sql,但它没有返回任何内容
select p.Name from patients p
where p.Id in (select patientIds from doctors d where d.Id=@id);
答案 0 :(得分:0)
使用较小的数据集,这足够快:
SELECT p.Name
FROM patients p
JOIN doctors d ON d.Id=@id AND FIND_IN_SET(p.id, d.patientIds)
;
但实际上,正如评论者所说,您需要一个联接表来调解patients
和doctors
之间的关系。
答案 1 :(得分:0)
多对多关系的通用答案/模板:
SELECT [fields you want]
FROM tableA
[INNER|LEFT] JOIN ["middle" table] AS AB ON tableA.id = AB.A_id
[INNER|LEFT] JOIN tableB ON AB.B_id = tableB.id
;