mysql - MySQL DISTINCT(COUNT) 如何针对不同条件返回相同数量的行?

标签 mysql select count group-by distinct

我继承了两个查询来提取不同角色代码的患者总数,问题是,它们返回相同的数字 - 我现在知道 DISTINCT 正在产生这个,因为表如下所述,但不确定如何向查询添加其他条件以进行隔离:

查询 1(理论上结果应该更小

SELECT count(DISTINCT p.patient)
FROM react r
INNER JOIN CasesR cr
ON cr.globalid = r.globalid
LEFT JOIN profile p
ON cr.globalid = p.globalid
WHERE r.desc = 'A'
AND cr.rcode = 'PS'

查询 1(理论上结果应该大得多)

SELECT count(DISTINCT p.patient)
FROM react r
INNER JOIN CasesR cr
ON cr.globalid = r.globalid
LEFT JOIN profile p
ON cr.globalid = p.globalid
WHERE r.desc = 'A'

react 关键字段

 rrecordid (PK)
 globalid (Multiples in table IE: rrecordid=1,globalid=122; rrecordid=2,globalid=333)
 desc (Multiples in table IE: rrecordid=1,globalid=122; rrecordid=2,globalid=333)

CasesR 关键字段

 crecordid (PK)
 globalid 
 (Multiples in table IE: crecordid=1,globalid=122;crecordid=2,globalid=333)
 rcode (enum: 'A','B','C','D') 
 (multiples, globalid=122;rcode=A; globalid=122;rcode=B)

配置文件关键字段

 globalid (PK)
 patient (Multiples in table IE: globalid=1,patient=122;globalid=2,patient=122)

那么如何更改此查询以获得真实计数?

谢谢

最佳答案

将上述评论的内容汇总起来。 . .您的查询给您真实的计数。您的第一个查询(使用 AND cr.rcode = 'PS' )意味着:

Find all profile records that (1) have a corresponding record in react with desc = 'A' and (2) have a corresponding record in casesr with rcode = 'PS'. How many distinct values are there for those profile records' patient fields?

你的第二个查询(没有 AND cr.rcode = 'PS' )意味着同样的事情,除了限制 #2 从“在 casesr 中有一个对应的记录和 rcode = 'PS' ”更改为“在 casesr 中有一个对应的记录”。自然地,由于这是一个更宽松的限制,它永远不会产生一个较小的值;但它肯定会产生相同的值。

你说你继承了这些查询;您确定编写它们的人实际上并不打算它们通常会给出相同的结果吗?也许 patient 满足第二个查询的所有要求而不满足第一个的轻微额外要求是相当不寻常的。

关于mysql - MySQL DISTINCT(COUNT) 如何针对不同条件返回相同数量的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9843566/

相关文章:

mysql - 我们可以优化这个 SQL 查询吗?

mySQL 大文本比较性能...最佳实践?

php - 仅搜索部分数据库字符串时打印数据库字符串(通过 PHP 语句)

php - 使用来自两个数据库的带有 WHERE 子句的两个表

MySql 从两个表中选择聚合

mysql - 从行中的金额中获取总数 MySQL PHP

php - PHP 和 MySQL 中的数学运算

mysql - 如何基于 JOINED 表中的 SELECT MAX() 更新 MySQL 表

mysql - 没有 wp 函数的 WordPress 自定义元查询 (wo.wp_query())

r - 在 R 中创建滚动壁计数变量