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行......正如我所需要的那样.
我的错误在哪里?
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)
| 归档时间: |
|
| 查看次数: |
3779 次 |
| 最近记录: |