0
我有以下MySQL表(實際表其實是非常巨大的,約2萬行):MySQL的SELECT COUNT如果大於3
----------------------------
userId | artistId | trackId
----------------------------
user1 | artist1 | track1
-------|----------|--------
user1 | artist1 | track1
-------|----------|--------
user1 | artist1 | track1
-------|----------|--------
user2 | artist1 | track1
-------|----------|--------
user2 | artist2 | track2
-------|----------|--------
user2 | artist2 | track2
-------|----------|--------
.... | .... | ....
我想什麼是:每個用戶,選擇用戶聆聽超過3個不同音軌的藝術家(即同一個音樂人的3首曲目)。這是因爲我需要將這個選擇作爲用戶對藝術家的偏好進行考慮,所以如果例如用戶僅聽一個或兩個藝術家的曲目,我不想將其視爲「偏好/喜歡」。 下面是我寫的查詢,但我不知道這是否是正確的:
select p.userId, p.artistId, p.trackId
from lastfm_part2 p
join
(select userId, artistId, trackId
from lastfm_part2
group by userId, artistId, trackId
having count(trackId) > 3) as m
on m.userId = p.userId and m.artistId = p.artistId and p.trackID = m.trackId
PS。我需要返回所有行,儘管它們可能看起來是重複的(相同的用戶,相同的軌道,相同的藝術家),但實際上它們與不同的時間戳有關。 我很感激,如果有人幫我理解這個查詢是否正確。
感謝
這是ANSI SQL,所以語法相同。 – sagi
感謝您的回答,但我需要所有行(因爲例如,有些行似乎是重複的(同一用戶,同一個藝術家,同一個曲目),但它們與不同的時間戳有關。 – mOna
我編輯了我的問題。 – mOna