Использование результата подзапроса дважды в MySQL
Я создаю триггер для обновления одной таблицы при вставке строки в другую таблицу. В этом операторе обновления мне нужно выбрать значение из первой таблицы. Затем мне нужно использовать это выбранное значение в двух местах инструкции update. Вот триггерный оператор, который у меня теперь есть:
CREATE TRIGGER rsrcInsTrig AFTER INSERT ON jos_resources
FOR EACH ROW
UPDATE newtbl
SET subtree_count = subtree_count + 1
WHERE lft <= (SELECT lft FROM newtbl WHERE taxon_id = NEW.taxon_id)
AND rgt >= (SELECT lft FROM newtbl WHERE taxon_id = NEW.taxon_id);
Это прекрасно работает, но не очень элегантно (мне не нужно говорить, что "newtbl" - не очень хорошее название для стола; я его не делал). Ясно, что я хотел бы, чтобы подзапрос был запущен только один раз, с значение сохранено и использовано дважды. Если бы это был язык программирования, я бы определил переменную.
Есть ли способ сделать то, что я хочу? Действительно ли это проблема (обратите внимание, что "newtbl" имеет более 1,5 миллионов записей, поэтому запросы к нему не являются незначительными)? Другие вопросы по этой теме были решены с помощью соединений, но я не думаю, что это применимо здесь.