Запрос нескольких полей соединения со значениями, разделенными запятыми
В SQL при работе с таблицами, содержащими списки, разделенные запятыми (CSV), в их полей, эффективное выполнение соединений может оказаться затруднительным. В этой статье рассматривается конкретный сценарий, в котором столбец категорий в таблице фильмов содержит несколько идентификаторов категорий, и цель состоит в том, чтобы полностью исключить их при получении соответствующих названий категорий из таблицы категорий.
Следующие таблицы иллюстрируют этот сценарий. :
Table categories: -id- -name- 1 Action 2 Comedy 4 Drama 5 Dance Table movies: -id- -categories- 1 2,4 2 1,4 4 3,5
Чтобы выполнить желаемое соединение, мы можем использовать функцию find_in_set() в сочетании с операцией group_concat(). Вот запрос:
select m.id, group_concat(c.name) from movies m join categories c on find_in_set(c.id, m.categories) group by m.id
Пояснение запроса:
Результирующий вывод отображается идентификаторы фильмов вместе с соответствующими названиями категорий в формате массива. Это обеспечивает легкий доступ к соответствующим категориям без необходимости декодирования CSV в таблице фильмов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3