我正在尝试使用这个简单的子查询来获取特定用户的所有喜爱用户
select * from users u
where u.user_id in
(
select GROUP_CONCAT(f.favorite_id SEPARATOR ',') as favourites
from favourite_user f
where f.user_id in(14) group by user_id
)
当我运行子查询select GROUP_CONCAT(f.favorite_id SEPARATOR ',') as favourites
from favourite_user f
where f.user_id in(14) group by user_id
时,它会给我结果6,8,11,10,13,15,7,12
当我运行此查询select * from users u
where u.user_id in (6,8,11,10,13,15,7,12)
时,它返回 7行结果
但是当我运行上面提到的主要查询时,它只是给我 1行(第一行)而不是7。
任何人都可以解释我做错了什么。我知道这也可以通过连接完成,但我想知道为什么这种方法不起作用
提前谢谢
答案 0 :(得分:1)
您不需要GROUP_CONCAT()
。试试
select *
from users
where user_id in
(
select favorite_id
from favourite_user
where user_id = 14
)
这是 SQLFiddle 演示