我有一个用户表。我还有另一个表,名为带有用户ID的诊断表,以及一个名为PHgroup的字段,其中每个用户都有一堆值(1到5)。我只想选择PH组中值为“ 1”的患者,并排除除1以外的其他任何值的患者。当我运行此查询时,即使他们的用户记录为1,有另一个PHgroup条目,其值为4。
$query= "SELECT *, users.id as usersid, diagnoses.PHgroup,
diagnoses.date_dx FROM users
inner join diagnoses on diagnoses.user_id = users.id
where diagnoses.PHgroup = '1' and NOT (diagnoses.PHgroup ='2' and
diagnoses.PHgroup ='3'and diagnoses.PHgroup ='4')";
如何在PHgroup表中仅选择值为1的用户,而不选择具有其他值的患者(即使他们也具有组1)
需要说明的是:如果用户有一个值为1的条目和一个值为4的anotehr条目,则我不想选择该用户。
仅值为1的用户,没有其他值为1的条目。
最佳答案
您要从诊断表中查询患者不在PHgroup 2-5中的ID。
您可以使用CTE(不确定所运行的mysql版本)或嵌套查询来执行此操作。
使用它作为where子句,仅在PHgroup = 1时获得结果:
where users.id in (select user_id from diagnoses where user_id not in (select user_id
from diagnoses where PHgroup in (2,3,4,5)))