2013-08-28 26 views
0

我試圖用這個簡單的子查詢Mysql的group_concact我在做什麼錯

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

任何具體你需要使用GROUP_CONCAT原因是什麼? –

+1

'group_concat'爲您提供一個字符串作爲結果。這在'in'中不起作用。 'in'需要單獨的ID。 –

+0

@ArunKumarM我想在所需的逗號分隔符ID –

回答

1

你不需要GROUP_CONCAT()。嘗試

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

這裏是SQLFiddle演示