mysql:如何在另一个表记录的字段中查询id

时间:2016-04-21 19:48:03

标签: mysql

说我有两张桌子医生和病人 假设患者有两列: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); 

2 个答案:

答案 0 :(得分:0)

使用较小的数据集,这足够快:

SELECT p.Name
  FROM patients p
  JOIN doctors d ON d.Id=@id AND FIND_IN_SET(p.id, d.patientIds)
;

但实际上,正如评论者所说,您需要一个联接表来调解patientsdoctors之间的关系。

答案 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
;