IN子查询中的GROUP_CONCAT

Mat*_*oal 3 mysql

SELECT  A.id, A.title, 
FROM (`table`) as A
WHERE A.active = '1'
AND A.id IN (SELECT GROUP_CONCAT(B.id) from B where user = 3)
Run Code Online (Sandbox Code Playgroud)

如果我SELECT GROUP_CONCAT(B.id) from B where user = 3只启动子查询,我获得1,2,3,4.但是,如果我启动整个查询,我只获得一行.

但是如果我试图用它的值替换子查询(1,2,3,4)

SELECT  A.id, A.title, 
FROM (`table`) as A
WHERE A.active = '1'
AND A.id IN (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

我获得了4行......正如我所需要的那样.

我的错误在哪里?

Mar*_*c B 8

MySQL看到子查询只返回一个字段/行,因此将其视为:

... and A.id IN ('1,2,3,4')
Run Code Online (Sandbox Code Playgroud)

归结为A.id = '1,2,3,4'.

对于'in'查询,不需要group_concat的东西,只需执行:

... and A.id IN (select B.id FROM b where user = 3)
Run Code Online (Sandbox Code Playgroud)