MySQL - где IN вместе с GROUP_CONCAT - PullRequest
4 голосов
/ 23 ноября 2008

Запрос, используемый внутри 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

1 Ответ

8 голосов
/ 23 ноября 2008

С документы :

GROUP_CONCAT (expr):
Эта функция возвращает строковый результат с объединенными ненулевыми значениями из группы.

Вы получаете строку , содержащую '1,2'. Это ничего нельзя передать в предложение IN, потому что это одиночное значение, а не два.

Просто сделайте это без GROUP_CONCAT и оно будет работать:

gi.groupid IN 
(
  SELECT 
    gf.groupid
  FROM 
    ...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...