gpt4 book ai didi

mysql - 添加 WHERE 子句后对连接结果感到困惑

转载 作者:行者123 更新时间:2023-11-29 03:46:45 25 4
gpt4 key购买 nike

我正在尝试计算与每个诊所相关的客户数量,我想显示所有诊所,即使客户数量为 0。我的查询按预期工作,直到我放入 WHERE 子句。

这是对数据库表和查询​​的精简描述,以了解问题的本质。

客户表

client_id | health_clinic_id | accepted  
----------------------------------------
1 1 1
2 2 NULL
3 1 1

options_health_clinics 表

health_clinic_id | health_clinic_name  
--------------------------------------
1 South Valley
2 North Valley
3 East Valley
4 West Valley

以下查询符合我的预期,即由于 RIGHT JOIN,即使诊所的客户数量为 0,也会显示所有诊所。

SELECT  
options_health_clinics.health_clinic_name,
COALESCE(COUNT(clients.health_clinic_id), 0) AS n_clients

FROM clients
RIGHT JOIN options_health_clinics ON options_health_clinics.health_clinic_id = clients.health_clinic_id

GROUP BY options_health_clinics.health_clinic_id

只要我放入 WHERE 子句(如下)以过滤掉未接受的客户,就只会显示计数非零的健康诊所。

WHERE clients.accepted = 1 

为什么会这样,我该如何解决?

谢谢,米切尔

最佳答案

我认为您想将 WHERE 条件移动到 ON 条件。

RIGHT JOIN options_health_clinics
ON options_health_clinics.health_clinic_id = clients.health_clinic_id
AND clients.accepted = 1

这将仅包括在客户加入 options_health_clinics 之前 accepted 为 1 的客户。

关于mysql - 添加 WHERE 子句后对连接结果感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3313411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com