MySQL 分组依据删除单个结果


MySQL Group By removes single results?

我有 3 个表,我正在连接在一起。如果数据存在于所有 3 个表中,它工作得很好,但在这种情况下,由于我假设的连接方式,它将返回每行的 3 个。

因此,为了摆脱重复项,我按名称分组,每只剩下 1 行,这很棒。

但是,如果第三个表为空,则根本不返回任何行。如果我删除 GROUP BY 部分,它会返回每行的 1

所以我的问题是 2 重的:1. 为什么会这样?2. 如何修复?

简而言之,问题是:"为什么MySQL在使用分组依据时只找到每行1行时删除行"。

例如,如果我得到这些名字:汽车电话电视

我按名称去一个组,它根本不返回任何内容。 如果是这样的:

Car
Phone
TV
Car
Phone
TV

该小组按预期工作,并给我留下了每人 1 个。

这是 SQL(末尾是分组):

SELECT name, amount, amount_left
FROM `template_useages_products`
JOIN products ON template_useages_products.product_id = products.id 
JOIN leftovers ON leftovers.template_useages_id = template_useages_products.template_useages_id
WHERE template_useages_products.template_useages_id = ?
GROUP BY name

提前谢谢。

SELECT
    name, amount, amount_left
FROM
    template_useages_products
    LEFT JOIN products ON template_useages_products.product_id = products.id
    LEFT JOIN leftovers ON leftovers.template_useages_id = template_useages_products.template_useages_id
WHERE
    template_useages_products.template_useages_id = ?
GROUP BY
    name

请改用LEFT JOINJOIN在 MySQL 中默认是指INNER JOIN,这意味着如果任何表缺少匹配记录,结果将被排除。裁判

通过使用 LEFT JOIN ,最终结果表中的那些列将填充 NULL。