2014-05-18 16 views
0

我有兩個表。我想將它們加在一起,其中users_logs.music_id=users_likes.music_idusers_logs.user_id=users_likes.user_id獲取行並標記存在於另一個表上的某些它們

此表名爲users_logs並具有重複的行。

+----+----------+---------+ 
| id | music_id | user_id | 
+----+----------+---------+ 
| id | 1  | 1  | 
+----+----------+---------+ 
| id | 2  | 1  | 
+----+----------+---------+ 
| id | 1  | 1  | 
+----+----------+---------+ 
| id | 3  | 2  | 
+----+----------+---------+ 
| id | 3  | 1  | 
+----+----------+---------+ 

該表名爲users_likes。

+----+----------+---------+ 
| id | music_id | user_id | 
+----+----------+---------+ 
| id | 1  | 1  | 
+----+----------+---------+ 
| id | 2  | 2  | 
+----+----------+---------+ 
| id | 5  | 1  | 
+----+----------+---------+ 

得到降序上次從user_logs爲user_id=1 3行我想下面的輸出後:

1. music_id = 3 like = 0 
2. music_id = 1 like = 1 
3. music_id = 2 like = 0 

我如何能做到這一點,只有1 MySQL查詢?

+0

你已拷貝了同桌的user_likes - 請編輯它,並告訴我們你的領域是兩個 – DreamWave

+0

結構表同但數據不同 – Hossein

回答

1

如果我正確地遵循邏輯,這個查詢應該做你想做的。它假定id列指定從user_logs得到最後三行的排序:

select ul.music_id, (uli.user_id is not null) as `like` 
from (select ul.* 
     from user_logs ul 
     where user_id = 1 
     order by id desc 
     limit 3 
    ) ul left outer join 
    users_likes uli 
    on ul.user_id = uli.user_id and ul.music_id = uli.music_id; 
相關問題