gpt4 book ai didi

MySQL SELECT Count 语句问题

转载 作者:行者123 更新时间:2023-11-29 12:57:19 28 4
gpt4 key购买 nike

我有两个 MySQL 查询:

第一:

SELECT DISTINCT (broker.broker_id),company_id ,broker_name,company_name,mobile1_no,email,pan_card_num,broker_id,broker_id,company_id
FROM broker_firm AS broker_firm
LEFT JOIN broker ON broker_firm.company_id = broker.firm_id
AND broker_firm.is_active =1
AND broker.is_active =1

此查询生成 331 个结果。

第二:

SELECT COUNT( broker.broker_id ) AS tot
FROM broker_firm AS broker_firm
LEFT JOIN broker AS broker ON broker_firm.company_id = broker.firm_id
AND broker_firm.is_active =1
AND broker.is_active =1

此查询生成 289 个结果。

谁能告诉我原因吗?我预计两个结果是相同的。或者,Count(*) 结果可能更大。

提前致谢

最佳答案

当您执行左连接时,逻辑很简单:保留第一个表中的所有行,无论on子句中的条件是否为真。如果条件为 false,则第二个表中的所有列的值均为 NULL

当您执行内部联接时,逻辑是将所有行保留在第一个表中。

在第一个查询中,附加条件位于 on 子句中。因此,第一个表中的所有行都被保留(并且不要忘记联接本身可能会导致重复)。在第二个查询中,where 子句有一个条件 broker.is_active = 1。当 is_activeNULL 时,此条件将失败 - 这是记录不匹配时发生的情况。换句话说,条件是将左连接变成内连接

编辑:

这个想法是一样的。第二个查询是计算匹配记录。 count(broker.broker_id) 计算该列的非 NULL 值。这与执行内部联接相同。

第一个查询正在计算所有记录。 select unique 选择所有列的不同值。您的语法有点令人困惑,因为它表明您只需要一列的不同值。但事实并非如此。由于您在 select 中拥有两个表中的列,因此不匹配的经纪商将在该行中包含其公司信息,从而使该行与所有其他行不同。

关于MySQL SELECT Count 语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843973/

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