0

我正在尝试使用这个简单的子查询来获取特定用户的所有最喜欢的用户

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。

谁能解释我做错了什么。我知道这也可以通过连接来完成,但我想知道为什么这种方法不起作用

先感谢您

4

1 回答 1

1

你不需要GROUP_CONCAT()。尝试

select * 
  from users
 where user_id in 
(
    select favorite_id 
      from favourite_user
     where user_id = 14
)

这是SQLFiddle演示

于 2013-08-28T05:01:00.037 回答