MySQL - 其中IN与GROUP_CONCAT一起使用

4 mysql sql

IN()内部使用的查询返回: 1, 2.但是整个查询返回0行,这是不可能的,因为它们存在.我在这做错了什么?

SELECT DISTINCT 
  li.auto_id
FROM 
  links AS li
  JOIN group_data AS gi ON 
    li.auto_id = gi.autoid AND li.user_id = gi.userid
WHERE 
  gi.groupid IN 
  (
    SELECT 
      CAST( GROUP_CONCAT( gf.groupid ) AS CHAR )
    FROM 
      group_followers AS gf
    WHERE 
      gf.userid_ext = '1'
    GROUP BY 
      gf.userid_ext
  )
  AND li.keyword LIKE '%shiba%'
Run Code Online (Sandbox Code Playgroud)

非常感谢,

Tom*_*lak 8

来自文档:

GROUP_CONCAT(expr):
此函数返回一个字符串结果,其中包含来自组的连接非NULL值.

你得到一个包含的字符串'1,2'.这不是你可以提供给IN子句的东西,因为它是单个值,而不是两个.

只是在没有它的情况下这样做它GROUP_CONCAT会起作用:

gi.groupid IN 
(
  SELECT 
    gf.groupid
  FROM 
    ...
)
Run Code Online (Sandbox Code Playgroud)