Эти внешние объединения в ответе Mitosz действительно повредят - и будут возвращать каждого художника, а не только тех, у кого «один (или более) общий тег». Вместо этого используйте внутренние соединения
SELECT similar.name, count(*) as commontags
FROM artists current,
artisttags curtags,
artisttags simtags,
artists similar
WHERE current.id=curtags.artist_id
AND curtags.tag_id=simtags.tag_id
AND simtags.artist_id=similar.id
ORDER BY count(*) DESC;
Конечно, для более разумной системы индексации вы можете применить оценку к каждому тегу в таблице тегов (например, на основе голосов пользователей или количества элементов) и отсортировать результаты по SUM (tag.score).