Я не очень силен в SQL — могу писать только простые запросы, а с серьезными запросами у меня всегда проблемы. Если запрос «большой», я стараюсь всегда разбить его. Помню, как-то очень долго я мучился с такой проблемой: нужно было найти записи, которые являются дублями. Помучив, sql у меня получилось, может еще кому-нибудь пригодится:
SELECT id FROM books t1 WHERE EXISTS ( SELECT * FROM books t2 WHERE t1.name = t2.name AND t1.id < t2.id);
А как это работает?