【问题标题】:MySQL - Where IN together with GROUP_CONCATMySQL - 与 GROUP_CONCAT 一起在哪里
【发布时间】:2010-09-23 16:14:29
【问题描述】:

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

非常感谢,

【问题讨论】:

  • 如果我帮助了你,请接受 + 投票:-)
  • Ice 已经就 SO 提出了许多问题,但没有接受他的任何问题的任何答案。

标签: sql mysql


【解决方案1】:

来自the docs

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

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

不带GROUP_CONCAT 就可以了:

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

【讨论】:

  • 谢谢!我觉得很傻,花了 3 个小时弄清楚 CAST AS CHAR 部分,我什至不需要整个 GROUP_CONCAT。很好的教训,以后再也不会发生在我身上了。
  • 它非常完美,让我不必在这些方面做额外的工作。 :)
猜你喜欢
  • 2020-05-21
  • 1970-01-01
  • 2014-08-18
  • 2013-03-10
  • 2011-11-23
  • 2014-01-30
  • 1970-01-01
  • 2011-01-19
  • 2012-05-07
相关资源
最近更新 更多