Sql 两个表之间的子查询

Sql 两个表之间的子查询,sql,sql-server,Sql,Sql Server,我有两张桌子 患者表格 预约表格 我无法设计以下问题的查询 查找copay最高的患者的所有预约(让子查询为您查找患者)您需要使用MAX()聚合函数。我假设某个地方有一个copay列,因此子查询如下所示: SELECT patient_id FROM patient WHERE copay = (SELECT MAX(copay) FROM patient); SELECT a.* FROM appointment a JOIN patient p ON p.patient_id = a.pat

我有两张桌子

  • 患者
    表格
  • 预约
    表格
  • 我无法设计以下问题的查询

    查找copay最高的患者的所有预约(让子查询为您查找患者)

    您需要使用MAX()聚合函数。我假设某个地方有一个copay列,因此子查询如下所示:

    SELECT patient_id
    FROM patient
    WHERE copay = (SELECT MAX(copay) FROM patient);
    
    SELECT a.*
    FROM appointment a
    JOIN patient p ON p.patient_id = a.patient_id AND p.copay = (SELECT MAX(copay) FROM patient);
    
    然后,您可以将其与您的预约表合并,以获得该患者的预约。您甚至可以将此子查询作为ON子句的一部分,如下所示:

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

    要查找一名患者的结果,请执行以下操作:

    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;
    

    对于具有相同最高copay的多个患者,您可以将
    top 1
    更改为
    top 1带领带

    您解决过这个问题吗?