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