gpt4 book ai didi

MySQL SELECT IN GROUP_CONCAT

转载 作者:行者123 更新时间:2023-11-29 12:00:28 24 4
gpt4 key购买 nike

我想在 mysql 中使用 IN 子查询,但我需要 GROUP_CONCAT 来拥有 having(我的子查询运行良好)。

SELECT pd.* FROM Product pd 
WHERE perimeter_id IN (SELECT GROUP_CONCAT(p.id)
FROM Perimeter p
GROUP BY p.network_id, p.productRange_id, p.country_id
HAVING count(id) > 1);

最佳答案

您不必使用 GROUP_CONCAT。此查询将返回具有多个 ID 的所有 (network_id、productRange_id、country_id):

SELECT p.network_id, p.productRange_id, p.country_id, GROUP_CONCAT(p.id) 
FROM Perimeter p
GROUP BY p.network_id, p.productRange_id, p.country_id
HAVING count(id) > 1

此查询将返回不同行中的所有 ID:

SELECT p.ID
FROM
Perimeter p INNER JOIN (
SELECT p.network_id, p.productRange_id, p.country_id, GROUP_CONCAT(p.id)
FROM Perimeter p
GROUP BY p.network_id, p.productRange_id, p.country_id
HAVING count(id) > 1
) d ON (p.network_id, p.productRange_id, p.country_id) = (d.network_id, d.productRange_id, d.country_id)

这是您的最终查询:

SELECT pd.*
FROM Product pd
WHERE
perimeter_id IN (
SELECT p.ID
FROM
Perimeter p INNER JOIN (
SELECT p.network_id, p.productRange_id, p.country_id, GROUP_CONCAT(p.id)
FROM Perimeter p
GROUP BY p.network_id, p.productRange_id, p.country_id
HAVING count(id) > 1
) d ON (p.network_id, p.productRange_id, p.country_id) =
(d.network_id, d.productRange_id, d.country_id)
)

关于MySQL SELECT IN GROUP_CONCAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32459924/

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