我的MySQL数据库中有两个表:allele
和locus
。我想知道一个给定的位点有多少等位基因,其中有多少具有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/