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
withHAVING
子句似乎适用于单个值<代码>=
操作员将不工作,因为每篇文章可以附加多个组。谢谢FIND_IN_SET
withHAVING
子句似乎对单个值有效<代码>=
操作员将不工作,因为每篇文章可以附加多个组。谢谢