Есть подозрение, что ошибка генерируется где-то в другом месте. То есть у вас возможно подобный код есть где-то еще. У вас код корректный если бы в нем возникала эта ошибка, он бы ничего уже не считал, ибо SQL-ошибка распространяется на весь запрос.