MySQL-使用左连接结果中的IN子句检查多个值

MySQL-使用左连接结果中的IN子句检查多个值,mysql,sql,Mysql,Sql,如何在in子句中使用左连接的结果 这是我目前的疑问: SELECT n.id, n.title, n.public, CAST(GROUP_CONCAT(DISTINCT ngm.members_group_id) AS CHAR(1000)) AS `news_groups_text`, GROUP_CONCAT(DISTINCT ngm.members_group_id) AS `news_groups` FROM news n LEFT JOIN news_groups_map ngm

如何在
in
子句中使用
左连接的结果

这是我目前的疑问:

SELECT
n.id,
n.title,
n.public,
CAST(GROUP_CONCAT(DISTINCT ngm.members_group_id) AS CHAR(1000)) AS `news_groups_text`,
GROUP_CONCAT(DISTINCT ngm.members_group_id) AS `news_groups`

FROM news n

LEFT JOIN news_groups_map ngm ON ngm.news_id = n.id

WHERE public=0

GROUP BY n.id
它以表单形式返回结果

id   title   public    news_groups_text   news_groups
159  Test    0         5,6,4              (BLOB) 5 bytes
如何添加检查文章所属组的子句?例如,我有第4组和第6组,我需要返回所有在
news\u组中至少有一个组的结果

我试图通过在
WHERE
子句中添加以下内容,在
子句中使用
检查一组:

WHERE public=0 AND
4 IN (GROUP_CONCAT(DISTINCT ngm.members_group_id))
HAVING COUNT(CASE WHEN news_groups_text=4 THEN 1 END) > 0
但是我得到了错误
[Err]1111-组函数的无效使用

如何按组筛选文章?如果我能检查至少一个组,我就可以用


谢谢

我想您正在寻找:

注意:这只能由将原始查询用作子查询的外部查询使用

但将条件放在
HAVING
子句中更为自然:

WHERE public=0 AND
4 IN (GROUP_CONCAT(DISTINCT ngm.members_group_id))
HAVING COUNT(CASE WHEN news_groups_text=4 THEN 1 END) > 0

我认为您正在寻找:

注意:这只能由将原始查询用作子查询的外部查询使用

但将条件放在
HAVING
子句中更为自然:

WHERE public=0 AND
4 IN (GROUP_CONCAT(DISTINCT ngm.members_group_id))
HAVING COUNT(CASE WHEN news_groups_text=4 THEN 1 END) > 0

在MySQL中实现这一点的最简单方法是在
groupby
后面使用
HAVING
子句。最简单的条款是:

HAVING MAX(ngm.members_group_id = 4) > 0

在MySQL中实现这一点的最简单方法是在
groupby
后面使用
HAVING
子句。最简单的条款是:

HAVING MAX(ngm.members_group_id = 4) > 0

我认为在本例中,
语句中的
=
的作用相同。另外,您确定串联函数将返回值
4
?我怀疑您在这里遗漏了什么..无效的GROUP BY,将不会在较新的MySQL版本上执行。常规GROUP BY规则说:如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列或是一个集合函数的参数。我认为在这种情况下,
语句中的
=
的作用相同。另外,您确定串联函数将返回值
4
?我怀疑您在这里遗漏了什么..无效的GROUP BY,将不会在较新的MySQL版本上执行。常规GROUP BY规则规定:如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列,或者是集合函数的参数。
FIND_in_set
with
HAVING
子句似乎适用于单个值<代码>=
操作员将不工作,因为每篇文章可以附加多个组。谢谢
FIND_IN_SET
with
HAVING
子句似乎对单个值有效<代码>=
操作员将不工作,因为每篇文章可以附加多个组。谢谢