Мне кажется, вы не верно используете EXIST и из за этого не верно выполняется запрос.
А зачем здесь собственно IN/EXIST, кажется этот же запрос будет более эффективен, если использовать JOIN.
SELECT bl.id
FROM book_list bl
JOIN book_codes bc ON bc.id_book = bl.id
WHERE bl.active=1
AND bc.code LIKE '%f1%'
ORDER BY bl.id desc;