You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL关联patients与trials表,统计各试验的患者参与人数

解决SQL关联表统计患者人数的问题

原代码的问题

  • 子查询里SELECT patients是无效写法,得选trial_id才能和trials表做关联
  • 子查询的GROUP BY trials完全错误,要按patients.trial_id分组,这才是统计每个试验对应患者数的正确分组依据
  • JOIN操作没指定关联条件,会产生错误的笛卡尔积结果

正确写法一:先分组统计再关联

SELECT 
  trials.title AS Trial_Name,
  patient_counts.Num_Patients
FROM trials
JOIN (
  SELECT 
    trial_id,
    COUNT(id) AS Num_Patients
  FROM patients
  GROUP BY trial_id
) AS patient_counts ON trials.id = patient_counts.trial_id;

正确写法二:直接关联后分组(更简洁易读)

SELECT 
  trials.title AS Trial_Name,
  COUNT(patients.id) AS Num_Patients
FROM trials
JOIN patients ON trials.id = patients.trial_id
GROUP BY trials.id, trials.title;

简单说明

  • 两种写法都能输出你想要的结果:试验名称对应患者人数的列表
  • 第二种写法更适合新手理解:先通过外键trials.id = patients.trial_id把两张表关联起来,再按试验的唯一标识(trials.id)和名称分组,统计每组的患者数量

内容的提问来源于stack exchange,提问作者John Conor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:25:47