gpt4 book ai didi

mysql - 只需要对查询中的特定行进行分组

转载 作者:行者123 更新时间:2023-12-01 00:26:45 24 4
gpt4 key购买 nike

请考虑以下简化的 MySQL 表:

id  | docID  | docTypeID | makeID | desc
1 | 1 | 1 | 1 | doc 1
2 | 1 | 1 | 2 | doc 2
3 | 2 | 2 | 1 | doc 3
4 | 3 | 3 | 2 | doc 4
5 | 1 | 1 | 4 | doc 5
6 | 2 | 2 | 5 | doc 6
7 | 4 | 1 | 1 | doc 7

在此示例中,docID、docTypeID 和 makeID 都是外键。

当 docTypeID 1 的文档与多个品牌相关联时,我需要将这些文档组合在一起并返回一个特殊的品牌描述(“找到多个品牌”)。

我需要为这个示例表返回的是:

id  | docID  | docTypeID | makeID                | desc
1 | 1 | 1 | multiple makes found | doc 1
3 | 2 | 2 | 1 | doc 3
4 | 3 | 3 | 2 | doc 4
6 | 2 | 2 | 5 | doc 6
7 | 4 | 1 | 1 | doc 7

请注意,在 id 7 的情况下,只找到一个 make,因此没有执行分组。

我不确定如何根据条件限制分组,或者这是否可能。我希望这里的一位 SQL 天才可以提供帮助。如果需要任何其他信息,请告诉我。谢谢。

最佳答案

你可以这样写:

SELECT MIN(id) AS id,
docID,
docTypeID,
CASE WHEN COUNT(1) > 1
THEN 'multiple makes found'
ELSE MIN(makeID)
END AS makeID,
MIN(desc) AS desc
FROM simplified_mysql_table
GROUP
BY docID,
docTypeID
CASE WHEN docTypeID = 1
THEN 0
ELSE id
END
;

(注意 MIN(id)MIN(desc) 可能不是来自同一个底层记录。如果这是一个问题,那么你需要调整以上一点。)

关于mysql - 只需要对查询中的特定行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13198298/

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