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%'
非常感谢你,
冰
答案 0 :(得分:8)
来自the docs:
GROUP_CONCAT(expr):
此函数返回一个字符串结果,其中包含来自组的连接非NULL值。
你得到一个包含'1,2'
的字符串。这不是你可以提供给IN子句的东西,因为它是单个值,而不是两个。
只需在没有GROUP_CONCAT
的情况下执行此操作即可:
gi.groupid IN
(
SELECT
gf.groupid
FROM
...
)