Я проверил это на MySQL с некоторыми фиктивными данными, и запрос, кажется, возвращает мне более 4 строк. Я запустил ваши операторы создания таблиц, а затем заполнил их следующими утверждениями:
insert into tags (name) values ('java'), ('mysql'), ('php'), ('ruby'), ('.net'), ('python');
insert into codes_tags (code_id, tag_id) values (1,194), (2,194), (3,194), (1,191), (2,191), (3,191), (4,191), (5,191), (1,192), (1,195), (1,193);
Когда я запускаю ваш запрос по этим данным, он возвращает 6 строк. Для дальнейшей отладки вы можете опубликовать результаты следующих 2 запросов:
select count(*) from tags;
select * from tags limit 10;
Кроме того, чтобы убедиться, что вы обладаете надлежащей целостностью данных, можете ли вы добавить следующий внешний ключ и посмотреть, успешно ли он работает
alter table codes_tags add foreign key codes_tags_tag_id_key(tag_id) references tags(id);