首页 > 解决方案 > SQL Query 不断返回多行

问题描述

我编写了这个 SQL 查询来获得特定患者的剩余收益,由于患者 ID 是唯一的,因此期望它返回单行,但它不断返回多行。我该如何解决?DBMS 是 MySql

 select Plan.pBenefitMax - sum(Transaction.employerTotal) as RemainingBenefit
 from Patient
 inner join Plan on Patient.pPlanId = Plan.planId
 inner join Transaction on Patient.patientId = Transaction.tPatientId
  where Patient.patientId = 1
 Group by Plan.pBenefitMax;

标签: mysqlsql

解决方案


如果这没有得到单行,则您有重复的 PatientId 值或 PatientId 链接到多个计划。

  SELECT Plan.pBenefitMax - 
         (SELECT SUM(`Transaction`.employerTotal) 
            FROM `Transaction` 
           WHERE `Transaction`.tPatientId = Patient.patientId) 
         AS RemainingBenefit
    FROM Patient
    JOIN Plan ON Patient.pPlanId = Plan.planId
   WHERE Patient.patientId = 1;

推荐阅读