如何在IN
子句中使用来自LEFT JOIN
的结果?MySQL - 使用来自LEFT JOIN的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_groups
中至少有一个的结果。
我试图去检查一组与IN
条款,加入这一到WHERE
条款:
WHERE public=0 AND
4 IN (GROUP_CONCAT(DISTINCT ngm.members_group_id))
但后来我得到错误[Err] 1111 - Invalid use of group function
我如何通过滤除文章群体?如果我至少可以检查一个组,我可以将它们链接起来。AND
谢谢!
我认为在这种情况下'IN'语句与'='所做的相同。另外,你确定连接的函数会返回值'4'吗?我怀疑你在这里丢失了一些东西。 –
GROUP BY无效,不会在较新的MySQL版本上执行。一般的GROUP BY规则说:如果指定了GROUP BY子句,SELECT列表中的每个列引用必须标识一个分组列或者是一个set函数的参数。 – jarlh