gpt4 book ai didi

mysql:多重连接问题

转载 作者:可可西里 更新时间:2023-11-01 08:08:32 27 4
gpt4 key购买 nike

我试图选择一个具有多个连接的表,一个使用 COUNT 用于评论数量,一个使用 SUM 选择总投票值,问题是两个连接相互影响,而不是显示:

3 票 2 评论

我得到 3 * 2 = 6 票和 2 * 3 条评论

这是我正在使用的查询:

SELECT t.*, COUNT(c.id) as comments, COALESCE(SUM(v.vote), 0) as votes
FROM (topics t)
LEFT JOIN comments c ON c.topic_id = t.id
LEFT JOIN votes v ON v.topic_id = t.id
WHERE t.id = 9

最佳答案

您正在做的是一个 SQL 反模式,我称之为 Goldberg Machine。为什么要强制在单个 SQL 查询中完成问题,从而使问题变得如此困难?

下面是我真正解决这个问题的方法:

SELECT t.*, COUNT(c.id) as comments
FROM topics t
LEFT JOIN comments c ON c.topic_id = t.id
WHERE t.id = 9;

SELECT t.*, SUM(v.vote) as votes
FROM topics t
LEFT JOIN votes v ON v.topic_id = t.id
WHERE t.id = 9;

如您所见,将这两个组合成一个查询结果会产生笛卡尔积。可能有一些巧妙而微妙的方法可以强制它在一个查询中为您提供正确答案,但是当您需要第三个统计数据时会发生什么? 在两个查询中完成要简单得多

关于mysql:多重连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251783/

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