WITH tagged AS ( SELECT tags.id AS tagid, tags_lang.name, tags.filename, tags.type, COUNT(tracks_tags.tagid) AS tag_count, ROW_NUMBER() OVER ( PARTITION BY tags.type ORDER BY COUNT(tracks_tags.tagid) DESC, tags.filename ASC ) AS rn FROM tracks_tags JOIN tags_lang ON tracks_tags.tagid = tags_lang.tagid JOIN tags ON tags.id = tags_lang.tagid WHERE tracks_tags.trackid IN ('15737','26803','3135','7202','18589','4483','24147','11668','27508','23399','5251','6549','26064','8094','6447','18418','23335','13756','23515','28518','10140','10429','28154','28633','15420','17244','26848','10094','25826','26920','6581','13977','29598','23757','24971','4944','25160','2913','17327','29566','11023','11142','25986','27289','16084','26141','18203','28596','6242','18402','24207','29095','29185','3834','25674','5539','8371','10015','10896','15451','5543','26859','8931','3167','27787','17467','19582','27837','28823','6817','10259','14102','27939','7841','9508','23989','25038','6153','28905','3704','10454','15049','5073','23094','25262','5229','13481','27383','25589','26567','24612','10763','15330','20887','28282','5507','8272','12266','17193','23269','28642','6483','9770','13537','24663','29287','4303','7241','10782','21497','25767','28387','12459','28664','13681','18750','24779','27676','29521','4462','7247','21656','25778','28416','8799','12503','28754','6563','19054','24859','27688','7393','10969','15505','22064','28453','5928','12528','17439','28769','10122','19356','24867','4555','7521','22413','25906','6011','9418','12877','23627','27266','28803','3376','6687','14038','24944','29626','4666','7536','15758','22537','28542','6028','9471','13027','17715','3445','20058','29692','4773','11218','22566','28554','6058','13145','17731','27324','28832','3524','6889','14676','20137','28040','7887','11538','16561','22611','28574','9654','13311','24064','27343','7046','20219','28054','8062','11667','16847','26381') AND tags.type != 3 AND tags_lang.lang = 3 GROUP BY tags.id, tags_lang.name, tags.filename, tags.type ) SELECT tagid, name, filename, type, tag_count, rn FROM tagged WHERE (type = 5) OR (type = 1 AND rn >= 2) OR (type = 2 AND rn >= 2) OR ( type = 4 AND rn >= 2 AND MOD(rn - 2, 2) = 0 ) OR (type NOT IN (1,2,4,5)) ORDER BY tag_count DESC, filename ASC LIMIT 0, 120;