gpt4 book ai didi

MySQL Group_Concat 重复值

转载 作者:IT王子 更新时间:2023-10-28 23:45:53 26 4
gpt4 key购买 nike

我正在开发一个名为 PHP-Bouncer 的开源项目,我在为它编写的 MySQL 查询中遇到问题。基本上我们有三个表:BouncerRoles、PageInRole 和 BouncerPageOverrides。 BouncerRoles 包含访问级别,另外两个表通过外键链接回 BouncerRoles 并提供附加数据的多个条目。我编写了以下查询以尝试一次提取我需要的所有角色数据:

select BouncerRoles.RoleID, BouncerRoles.RoleName, 
GROUP_CONCAT(PageInRole.PageName separator '|') as ProvidedPages,
GROUP_CONCAT(CONCAT(BouncerPageOverrides.OverriddenPage,'&',BouncerPageOverrides.OverridingPage) separator '|') as OverriddenPages
from BouncerRoles join PageInRole on BouncerRoles.RoleID = PageInRole.RoleID
join BouncerPageOverrides on BouncerRoles.RoleID = BouncerPageOverrides.RoleID
group by BouncerRoles.RoleID;

此查询的目标是提供 RoleID、RoleName、所提供页面的竖线分隔列表和覆盖的竖线分隔列表(以 overriddenpage&overridingpage 的形式)。除了查询的最后一列,一切正常,它一遍又一遍地重复它找到的条目,就像这样(以 CSV 格式输出):

RoleID,RoleName,ProvidedPages,OverriddenPages
2,Exchange,exchange-how.php|exchange-support.php|exchange.php|premium-promo.php|exchange-resorts.php|premiumplus-promo.php|exchange-deposit.php|exchange-requestdestination.php,whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php
3,Premium,premiumplus-promo.php|premium-cruises.php|premium-resorts.php|premium-condohome.php|premium-hotelaircar.php|premium.php|premium-restaurants.php|premium-overview.php,premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php
4,"Premium Plus",premiumplus-exclusiveescapes.php|premiumplus.php|premiumplus-overview.php|premiumplus-concierge.php|premiumplus-airportlounge.php,premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php

是不是我在查询中做错了什么导致了这种情况?

最佳答案

您可能在 1..n 关系上连接一个表和两个表,产生重复的结果。

  • 使用GROUP_CONCAT( DISTINCT ...)

  • 使用两个子查询:在每个子查询中,对 2 个表中的每一个使用 GROUP_CONCAT() 和分组依据。然后加入两个子查询和主表。

关于MySQL Group_Concat 重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11486266/

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