gpt4 book ai didi

使用 SUM() 的 MySQL 查询未返回预期结果

转载 作者:行者123 更新时间:2023-11-29 07:06:42 25 4
gpt4 key购买 nike

查询:

SELECT 
id_data,
id_tag IN (75) AS tag1,
id_tag IN (12) AS tag2,
SUM(id_tag IN (75, 12)) summedTags
FROM
tags_inservice
WHERE id_service = 1
GROUP BY id_data
ORDER BY summedTags DESC

结果:

id_data    tag1    tag2  summedTags
------- ------ ------ ----------
3109 0 1 2
1956 0 0 2
1928 0 0 1
2738 1 0 1

我认为是错误的:

summedTags 很少与标签的实际总和相匹配!在例子中 id_data 3109 有 0 + 1 = 2 这是错误的,而 id_data 1956 显示 0 + 0 = 2 这也是错误的,等等。我做错了什么?

顺便说一句,我也尝试添加 HAVING SUM(id_tag IN (75, 12)) = 2 并得到类似的结果。

一些额外的信息,如果你需要的话:

我有一个表tags_inservice,里面有一堆数据(用id_data表示,是另一个表的id),数据可以用不同的标签来标记。一个 id_data 可以有零个或多个 id_tags,因此可以有多个行具有相同的 id_data 值。事实上,有时使用相同的 id_tag 多次标记相同的 id_data 是有效的。

DESCRIBE tags_inservice;

Field Type Null Key Default Extra
---------- ------- ------ ------ ------- --------------
id_intag int(11) NO PRI (NULL) auto_increment
id_tag int(11) YES MUL (NULL)
id_service int(11) YES MUL (NULL)
data_type int(11) YES (NULL)
id_data int(11) YES MUL (NULL)

最佳答案

似乎问题是由分组引起的,因为 summedTagsid_data

的出现
SELECT 
id_data,
sum(if (id_tag=75,1,0)) as tag1,
sum(if (id_tag=12,1,0)) as tag2,
sum(if (id_tag in(12,75),1,0)) as summedTags
FROM tags_inservice
WHERE id_service = 1
GROUP BY id_data
ORDER BY summedTags DESC;

关于使用 SUM() 的 MySQL 查询未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6914501/

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