gpt4 book ai didi

Mysql count left join group by 显示意外结果

转载 作者:行者123 更新时间:2023-11-29 09:27:34 24 4
gpt4 key购买 nike

有2张 table

`main_table`
`id_main` | `name`
1 | 'first one'

supplemental_table

`id_main`  | `value` 
1 | 'alias 1'
1 | 'aka 5'

我想计算 main_table 中的行数(但我需要加入 supplemental_table)。

   SELECT COUNT(`main`.`id_main`) FROM `main_table` `main` 
LEFT JOIN `supplemental_table` `supplemental`
ON `main`.`id_main` = `supplemental`.`id_main`
WHERE `main`.`name` = 'first one'
GROUP BY `main`.`id_main`;

main_table中只有一行id_main值为1。我使用GROUP BY。因此,期望使用 SELECT COUNT 得到结果 1。但是我得到 supplemental_table 中的行数结果。

这就是我所做的http://sqlfiddle.com/#!9/259055/10

代码有什么问题?

最佳答案

这里的一个简单修复方法是仅计算第一个表中不同的 pk 值:

SELECT
COUNT(DISTINCT main.pk)
FROM main_table main
LEFT JOIN supplemental_table supplemental
ON main.id_main = supplemental.id_main
WHERE
main.name = 'first one'
GROUP BY
main.id_main;

这里pkmain_table表上的主列或其他唯一键。这里的想法是,计数不受连接的影响,因为连接的 main_table 端的每个原始记录仍会计算其原始次数。

关于Mysql count left join group by 显示意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59316609/

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