站长网 MySql教程 mysql group_concat在哪里

mysql group_concat在哪里

我遇到以下问题的问题(如果这是一个重复的问题,那么我非常抱歉,但我似乎找不到任何可以帮助我的东西): SELECT d.*,GROUP_CONCAT(g.name ORDER BY g.name SEPARATOR “,”) AS membersFROM table_d AS d LEFT OUTER JOIN table_g AS g ON (d.eventid = g.id)

我遇到以下问题的问题(如果这是一个重复的问题,那么我非常抱歉,但我似乎找不到任何可以帮助我的东西):

SELECT d.*,GROUP_CONCAT(g.name ORDER BY g.name SEPARATOR ",") AS members
FROM table_d AS d LEFT OUTER JOIN table_g AS g ON (d.eventid = g.id)
WHERE members LIKE '%p%';

MySQL显然无法处理WHERE子句中GROUP_CONCAT列的比较.
所以我的问题非常简单.有没有解决方法,比如使用子查询或类似的东西?我真的需要这段代码才能工作,除了在查询本身中处理它之外,没有其他任何替代方法可以使用.

编辑1:

我不会显示实际的代码,因为这可能是保密的,我必须与同行核对.无论如何,我只是编写了这段代码,让你对这个陈述的样子有一个印象,虽然我同意你的说法,但它并没有多大意义.我将在一分钟内检查下面的答案,然后我会回复你.再次获得所有帮助!

编辑2:

尝试使用HAVING,但只有在我不使用GROUP BY时才有效.当我尝试它时,它给我一个语法错误,但当我删除GROUP BY时,查询工作完美.问题是,我需要GROUP BY,否则查询对我来说毫无意义.

编辑3:

好吧,所以我犯了一个愚蠢的错误,并在GROUP BY之前放了HAVING,这显然不起作用.感谢所有的帮助,它现在有效!

最佳答案
使用HAVING而不是WHERE.

... HAVING members LIKE '%peter%'

WHERE在评估GROUP_CONCAT之前应用过滤器; HAVING稍后适用.

编辑:我发现你的查询有点令人困惑.看起来它只会在一个字符串中只包含一行所有名称 – 除非数据库中没有人名为Peter,否则查询将返回任何内容.

也许HAVING并不是你真正需要的……

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/jc/mysql/2021/0524/5929.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部