aşağıdaki MySQL tablo (gerçek tablo, aslında yaklaşık 2 milyon satır çok büyük) var: Ben istiyorum nemysql select sayım eğer 3'ten büyük
----------------------------
userId | artistId | trackId
----------------------------
user1 | artist1 | track1
-------|----------|--------
user1 | artist1 | track1
-------|----------|--------
user1 | artist1 | track1
-------|----------|--------
user2 | artist1 | track1
-------|----------|--------
user2 | artist2 | track2
-------|----------|--------
user2 | artist2 | track2
-------|----------|--------
.... | .... | ....
olduğunu için: her biri için Kullanıcı, kullanıcıların 3 farklı parçadan daha fazlasını dinledikleri sanatçıları seçerler (yani, aynı sanatçının 3 parçasını). Bunun nedeni, bu seçimi sanatçıların kullanıcı tercihleri olarak düşünmem gerektiğinden, örneğin bir kullanıcının bir sanatçının yalnızca 1 veya iki parçasını dinlemesi durumunda, bunu "tercihler/beğeniler" olarak değerlendirmek istemiyorum. İşte yazdığım sorgu ama bu doğru olup olmadığından emin değilim:
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. Çoğalmış gibi görünseler bile tüm satırları geri vermem gerekiyor (aynı kullanıcı, aynı parça, aynı sanatçı), ancak gerçekte farklı zaman damgalarıyla ilişkilidir. Birisi, bu sorgunun doğru olup olmadığını anlamama yardımcı olursa memnun olurum. Ben Oracle bunu test
Teşekkür
Bu, ANSI SQL'dir, yani, aynı sözdizimi. – sagi
Cevabınız için teşekkürler, ancak tüm satırlara ihtiyacım var (örneğin, yineleme gibi görünen bazı satırlar var (aynı kullanıcı, aynı sanatçı, aynı parça), ancak farklı zaman damgaları ile ilgili. – mOna
Sorumu düzenledim . – mOna