两个表之间的子查询

时间:2014-11-30 21:08:00

标签: sql sql-server

我有两张桌子

  1. Patient
  2. Appointment
  3. 我无法为以下问题设计查询

    查找具有最高自付额的患者的所有约会(让子查询为您找到患者)

2 个答案:

答案 0 :(得分:1)

您需要使用MAX()聚合函数。我会假设某个地方有一个copay列,所以子查询看起来像这样:

SELECT patient_id
FROM patient
WHERE copay = (SELECT MAX(copay) FROM patient);

然后,您可以将其与您的约会表一起加入,以获得该患者的预约。您甚至可以将此子查询作为ON子句的一部分,如下所示:

SELECT a.*
FROM appointment a
JOIN patient p ON p.patient_id = a.patient_id AND p.copay = (SELECT MAX(copay) FROM patient);

答案 1 :(得分:0)

找一位患者的结果:

select a.*
from (select top 1 p.*
      from patient p
      order by p.copay desc
     ) p join
     appointment a
     on p.patient_id = a.patient_id;

对于具有相同最高自付额的多个患者,您可以将top 1更改为top 1 with ties