MySQL - 其中IN与GROUP_CONCAT一起使用

时间:2008-11-23 14:23:36

标签: sql mysql

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%'

非常感谢你,

1 个答案:

答案 0 :(得分:8)

来自the docs

  

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

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

只需在没有GROUP_CONCAT的情况下执行此操作即可:

gi.groupid IN 
(
  SELECT 
    gf.groupid
  FROM 
    ...
)