Как заменить значения в SELECT с совпадением текста с строками в другой таблице?MySQL SELECT шаблон заменить на результаты из другой таблицы
**products**
> +-------+--------------------------------------------------+
> | id | description |
> +-------+--------------------------------------------------+
> | 10001 | This product is %block1% and %block4% |
> | 10002 | This product is %block2%, %block3%, and is %block4% |
> +-------+--------------------------------------------------+
**descriptions**
> +-----------+-------------------+
> | blockname | blockcontent |
> +-----------+-------------------+
> | %block1% | 5 feet tall |
> | %block2% | matte white |
> | %block3% | makes music |
> | %block4% | made of real wood |
> +-----------+-------------------+
В идеале я хотел бы запустить один запрос, который возвращает
> +-------+--------------------------------------------------+
> | id | newdescription |
> +-------+--------------------------------------------------+
> | 10001 | This product is 5 feet tall and made of real wood |
> | 10002 | This product is matte white, makes music, and is made of real wood |
> +-------+--------------------------------------------------+
Я исследуемую REPLACE() и подставим(), но они, кажется, не то, что я ищу для.
Это похоже на действительно странный шаблон использования для реляционной базы данных. –
Наша бэкэнд-команда хочет использовать различные блоки в описаниях продуктов (многие продукты будут разделять разные общие блоки). – user3574926
Я понимаю намерение, но обычно можно использовать прикладную логику для применения подстановки шаблона, а не пытаться динамически делать это в базе данных. Я не вижу, как вы собираетесь получить запрос, который делает это в кратчайшие сроки, поэтому вам, вероятно, придется подумать о кэшировании результатов замещения каким-то образом, чтобы обеспечить быстрый поиск. –