簡體   English   中英

SQL 如何在同一個表中具有特定行值的 select 參與者 ID,其中這些行值來自另一個模式中的查找列表?

[英]SQL how to select participant IDs with specific row values in same table, where those row values are from a lookup list in another schema?

我想從一個表中 select 參與者在 B 列中同時診斷為癌症和糖尿病

例如:

ParticipantID Diagnosis
1234          Cancer 
1234          Diabetes
4567          Cancer
4567          Lung Disease
8910          Stroke
1256          Lung Disease
3489          Chron's Disease

如何編寫一個查詢,允許我查詢具有兩個(或多個)特定診斷的 select 參與者,例如,我只想查看同時患有癌症和糖尿病的參與者? (在上述示例中,參與者 ID 為 1234)

我嘗試做一個簡單的 select 語句:

SELECT diagnosisifknown.participantid
diagnosisifknown.diagnsis
diagnosisifknown.date
FROM
diagnosisifknown
where diagnosis ="1" and "10"; 

(查找表中這些診斷的值)

我想要一個像這樣的 output :

1234   Cancer
1234   Diabetes

聚合提供了一種簡單的選擇:

SELECT ParticipantID
FROM yourTable
GROUP BY ParticipantID
HAVING MIN(Diagnosis) <> MAX(Diagnosis);

你也可以在這里使用存在邏輯:

SELECT t1.ParticipantID
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2
              WHERE t2.ParticipantID = t1.ParticipantID AND t2.Diagnosis <> t1.Diagnosis);

你可以用 cte 來做,這里是演示

with cte as
(
  select
    ParticipantID
  from myTable
  where Diagnosis in ('Cancer', 'Diabetes')
  group by
      ParticipantID
  having count(ParticipantID) > 1
)

select
    c.ParticipantID,
    m.Diagnosis
from cte c
join myTable m
on c.ParticipantID = m.ParticipantID

output:

| participantid | diagnosis |
| ------------- | --------- |
| 1234          | Cancer    |
| 1234          | Diabetes  |

如果你想要參與者,你可以使用:

SELECT d.participantid
FROM diagnosisifknown d
WHERE diagnosis IN ('Cancer', 'Diabetes')
GROUP BY d.participantid
HAVING COUNT(*) = 2;

如果您想要原始行,我可能會建議EXISTS

select d.*
from diagnosisifknown d
where exists (select 1
              from diagnosisifknown d2
              where d2.participantid = d.participantid and d2.diagnosis = 'Cancer'
             ) and
      exists (select 1
              from diagnosisifknown d2
              where d2.participantid = d.participantid and d2.diagnosis = 'Diabetes'
             ) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM