我的MySQL数据库中有两个表:allelelocus。我想知道一个给定的位点有多少等位基因,其中有多少具有Tentative状态。我当前具有子查询的以下查询:

SELECT COUNT(*) as alleleCount,
     (SELECT COUNT(*)
      FROM allele
      INNER JOIN locus ON allele.LocusID = locus.PrimKey
      WHERE Status = 'Tentative'
      AND locus.ID = 762
      ) as newAlleleCount
FROM allele
INNER JOIN locus ON allele.LocusID = locus.PrimKey
WHERE locus.ID = 762

但我觉得一定有更好的方法来编写这个查询。

最佳答案

您可以使用SUM()using sum with condition将得到布尔值1或0,因此它将为您的条件提供计数

  SELECT locus.ID,COUNT(*) `all_alleles_per_locus`,
  SUM(Status = 'Tentative') `tentative_alleles_762`
  FROM allele
  INNER JOIN locus ON allele.LocusID = locus.PrimKey
  GROUP BY locus.ID

关于mysql - 编写MySQL子查询的更好方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22201791/

10-13 02:48