首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解用从句计数组中不同值的结果

如何理解用从句计数组中不同值的结果
EN

Stack Overflow用户
提问于 2022-02-22 14:11:41
回答 1查看 53关注 0票数 3

数据库:版本8.0.26-17 https://www.percona.com/doc/percona-server/8.0/release-notes/Percona-Server-8.0.26-17.html

我有两个问题产生不同的结果。我不明白为什么。

1)

代码语言:javascript
复制
select eev_company_id,
count(distinct maj.dsd_prefix) as maj_cnt,
count(distinct min.dsd_prefix) as min_cnt
from ehev_most_recent as eev
inner join ekohubschema as ehs on  ehs.ehs_subcategory = eev.eev_subcategory
left join datasourcedescription as maj on maj.dsd_prefix = eev.eev_prefix and maj.dsd_type_id = 'MAJ'
left join datasourcedescription as min on min.dsd_prefix = eev.eev_prefix and min.dsd_type_id <> 'MAJ'
where ehs.ehs_category <> 'Exclusionary Factors'
group by eev.eev_company_id
having eev.eev_company_id = 'ADD53604';

结果是:

代码语言:javascript
复制
+----------------+---------+---------+
| eev_company_id | maj_cnt | min_cnt |
+----------------+---------+---------+
| ADD53604       |       2 |       1 |
+----------------+---------+---------+

第二个查询与AND基本相同,但替换了AND

2)

代码语言:javascript
复制
select 
count(distinct maj.dsd_prefix) as maj_cnt,
count(distinct min.dsd_prefix) as min_cnt
from ehev_most_recent as eev
inner join ekohubschema as ehs on ehs.ehs_subcategory = eev.eev_subcategory
left join datasourcedescription as maj on maj.dsd_prefix = eev.eev_prefix and maj.dsd_type_id = 'MAJ'
left join datasourcedescription as min on min.dsd_prefix = eev.eev_prefix and min.dsd_type_id <> 'MAJ'
where ehs.ehs_category <> 'Exclusionary Factors' AND eev.eev_company_id = 'ADD53604';

此查询的结果是:

代码语言:javascript
复制
+---------+---------+
| maj_cnt | min_cnt |
+---------+---------+
|       2 |       0 |
+---------+---------+

如您所见,这里的min_cnt是0,而对于第一个查询,它是1。差异的原因是什么?

如果删除ekohubschema联接,则得到相同的结果:

代码语言:javascript
复制
select eev_company_id,
count(distinct maj.dsd_prefix) as maj_cnt,
count(distinct min.dsd_prefix) as min_cnt
from ehev_most_recent as eev
left join datasourcedescription as maj on maj.dsd_prefix = eev.eev_prefix and maj.dsd_type_id = 'MAJ'
left join datasourcedescription as min on min.dsd_prefix = eev.eev_prefix and min.dsd_type_id <> 'MAJ'
group by eev.eev_company_id
having eev.eev_company_id = 'ADD53604'; 

+----------------+---------+---------+
| eev_company_id | maj_cnt | min_cnt |
+----------------+---------+---------+
| ADD53604       |       2 |       0 |
+----------------+---------+---------+

ekohubschema表有以下列:ehs_categoryehs_subcategoryehs_long_description,没有任何公司ID,但它会干扰结果。

我没有看到任何次要的信息源,只有少校。这就是为什么我很难找出计数1(对于min_cnt )来自哪里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 15:42:47

请检查此查询的输出:

代码语言:javascript
复制
select 
   eev_company_id, 
   min.dsd_prefix
from ehev_most_recent as eev
left join datasourcedescription as min on min.dsd_prefix = eev.eev_prefix and min.dsd_type_id <> 'MAJ'
where eev.eev_company_id = 'ADD53604'; 

我认为它(输出)至少包含一次1,如果不是,它就是一个bug。

是的,我认为这是个bug,参见:DBFIDDLE。我在这里报告过:bug 106539

该bug也存在于MariaDB 10.6中,参见:DBFIDDLE

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71222822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档