gpt4 book ai didi

计算值上的 MySQL GROUP BY 给出错误 - 使用其他值会产生意外结果

转载 作者:可可西里 更新时间:2023-11-01 07:50:05 26 4
gpt4 key购买 nike

此查询返回所有 23 个 music.id:39,64,1327,1608,1644,1657,1666,1676,1681,1686,1691,1711,1726,1730,1811,1851,2346,2440,2967,2968,2996,2998,3110

但是...我想根据计算值进行分组,然后按类别分组(因为“名称”对于每条记录都是唯一的,而类别不是)

SELECT 
music.id,
music.name AS name,
music.filename,
music.url_name,
music.file_path_high,
music.filesize,
music.categories AS category,
music.duration,
music.folder AS folder,
SUM(active0.weight) + SUM(active1.weight) AS total_weight
FROM (music)
INNER JOIN linked_tags AS active0
ON active0.track_id = music.id AND active0.tag_id = 1
INNER JOIN linked_tags AS active1
ON active1.track_id = music.id AND active1.tag_id = 11
GROUP BY name
ORDER BY total_weight DESC

但是...当我尝试 GROUP BY total_weight 时出现错误(它说我“无法根据 total_weight 分组”)。我不能 GROUP BY 一个计算值吗?此外,如果我尝试 GROUP BY 任何其他值,则返回的结果对于该 GROUP BY 参数是唯一的,因此根据参数,我可能会得到 0 个结果。 GROUP BY 'music.categories' 例如只返回 7 个项目,7 个项目都具有不同的类别。每个项目的“名称”值都是唯一的,所以它实际上不能对任何东西进行分组,所以我认为通过按“类别”分组至少会按它们所属类别的相似整数对它们进行分组,但这不是我的想法看见了

我的表结构是这样的:

//music table
ID name categories
1 Hopeful 02 1
2 Organic 01b 3
3 Organic 01c 3
4 Instrumental 01 8

// linked_tags table
track_id tag_id weight
1 1 3
2 2 4
2 3 5
2 1 2

最佳答案

您不能按聚合函数进行分组。它必须使用组来计算总和,并使用总和来获取组,这是一个陷阱 22 的情况。

您可能打算在 active0.weight + active1.weight 上分组

关于计算值上的 MySQL GROUP BY 给出错误 - 使用其他值会产生意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9006623/

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