mysql组_concat在何处

mysql组_concat在何处,mysql,Mysql,我对以下查询有问题(如果这是一个重复的问题,那么我非常抱歉,但我似乎找不到任何可以帮助我的东西): MySQL显然无法处理WHERE子句中GROUP_CONCAT列的比较。 所以我的问题很简单。是否有解决方法,比如使用子查询或类似的方法?我真的需要这段代码来工作,除了在查询本身中处理这段代码之外,没有其他方法可以使用 编辑1: 我不会显示实际的代码,因为这可能是机密的,我必须与我的同事核实。不管怎么说,我写这段代码只是为了给你一个关于这个语句的印象,尽管我同意你的观点,它没有多大意义。我马上核对

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

MySQL显然无法处理WHERE子句中GROUP_CONCAT列的比较。 所以我的问题很简单。是否有解决方法,比如使用子查询或类似的方法?我真的需要这段代码来工作,除了在查询本身中处理这段代码之外,没有其他方法可以使用

编辑1:

我不会显示实际的代码,因为这可能是机密的,我必须与我的同事核实。不管怎么说,我写这段代码只是为了给你一个关于这个语句的印象,尽管我同意你的观点,它没有多大意义。我马上核对下面的答案,到时再给你回复。再次感谢所有的帮助

编辑2:

尝试使用
HAVING
,但这仅在我不使用
groupby
时有效。当我尝试它时,它会给我一个语法错误,但是当我删除
groupby
时,查询工作得非常好。问题是,我需要
分组依据
,否则查询对我来说毫无意义

编辑3:


好吧,我犯了一个愚蠢的错误,把
HAVING
放在
groupby
之前,这显然不起作用。谢谢你的帮助,现在可以用了

使用
HAVING
而不是
WHERE

... HAVING members LIKE '%peter%'
其中
在评估
组浓度
之前应用过滤器<代码>具有稍后应用它

编辑:我发现您的查询有点混乱。看起来它只会在一个字符串中得到一行,其中包含您的所有姓名——除非数据库中没有人叫Peter,否则在这种情况下,查询将不返回任何内容

也许你并不真正需要拥有。

试试看

SELECT ...
...
WHERE g.name = 'peter'

相反。由于您只需执行简单的名称查找,因此无需搜索派生字段-只需匹配底层原始字段。

GROUP\u CONCAT
是一个聚合函数。你必须用某种东西来分组。如果您只想要所有包含
%peter%
的行,请尝试

SELECT d.*, g.name  
FROM table_d AS d 
  LEFT OUTER JOIN table_g AS g 
  ON (d.eventid = g.id) 
WHERE g.name LIKE '%peter%'; 

像“%peter%”这样的
g.name有什么问题?
?这并不完全正确。是-
GROUP\u CONCAT
是一个聚合函数,但否-您不需要
GROUP BY
something。如果没有给出
group BY
语句,MySQL只是将所有结果集分组到同一个组中,这可能是此处所需的效果。@dnagirl:group_concat在select中已经有一个别名。。。它是
members
,因此@awm是完全正确的。您完全可以在having子句中使用别名。试试看@德纳吉尔:也许你是指
WHERE
子句中的意思?因为
WHERE
子句不接受别名,如果接受,则为correct@BigFatBaby,@awm:撤回反对意见。我把别名的限制和WHERE子句的限制搞混了。好吧,
拥有
确实有效,除非我也想使用GROUP BY。
SELECT d.*, g.name  
FROM table_d AS d 
  LEFT OUTER JOIN table_g AS g 
  ON (d.eventid = g.id) 
WHERE g.name LIKE '%peter%';