Поскольку ваш код ожидает ноль или одну строку, используйте синтаксис SET
:
SET my_thing = (SELECT thing FROM dups where dups.thing = thing_id);
Это установит my_thing
в null
, если строк нет.
Я не проверял это, поэтому, если все еще устанавливает обработчик, измените его на, который всегда возвращает строку:
SET my_thing = SELECT IFNULL((SELECT thing FROM dups where dups.thing = thing_id), null);
Кроме того, вы можете преобразовать ваше утверждение аналогично:
SELECT IFNULL((SELECT thing FROM dups where dups.thing = thing_id), null) INTO my_thing;
Я считаю, что эти альтернативы представлены в порядке удобочитаемости.