Комментарии дали хорошее предложение использовать временную таблицу. Я отправлю пример и пометьте свой ответ как CW.
CREATE TEMPORARY TABLE TempT AS SELECT A, GROUP_CONCAT(B) FROM X INNER JOIN Z ON ...;
UPDATE T1 INNER JOIN TempT AS T2 ON T1.A=T2.A
SET ...
Не то временной таблицы с правами на текущую сессию. То есть, он виден только для сеанса, который его создал, и он автоматически отбрасывается при завершении сеанса.
Если вы хотите, чтобы эта таблица была постоянной и видимой для нескольких сеансов, вы не можете использовать параметр TEMPORARY. Просто создайте таблицу как обычную таблицу. Это часто называют итоговой таблицей , когда вы сохраняете результат совокупности.
Тогда у вас есть некоторые решения по дизайну, чтобы определить, как часто вы его обрезаете и повторно заполняете текущими данными. Это зависит от вашего мнения - нет правильного ответа, и это one of the hardest problems in computer science to solve.
Если вы хотите использовать временную таблицу, но вам нужно, чтобы она была на 100% синхронизирована с другими данными, не беспокоясь о том, как часто вы ее обновляете, вы можете рассмотреть возможность определения VIEW.
CREATE OR REPLACE VIEW TempT AS SELECT A, GROUP_CONCAT(B) FROM X INNER JOIN Z ON ...;
Почему бы не написать результирующий набор в таблицу памяти temp или аналогичную? –
Если '@ T' является результатом запроса SELECT и вы хотите использовать его много раз, его можно сохранить в (временной) таблице. –
Привет, ребята, это очень хорошая идея, спасибо! – ktm5124