«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как объединить таблицы с полями значений, разделенными запятыми, в SQL?

Как объединить таблицы с полями значений, разделенными запятыми, в SQL?

Опубликовано 16 ноября 2024 г.
Просматривать:356

How to Join Tables with Comma-Separated Value Fields in SQL?

Запрос нескольких полей соединения со значениями, разделенными запятыми

В 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

Пояснение запроса:

  • find_in_set() проверяет, существует ли указанная подстрока внутри строки, в данном случае, если идентификатор категории из Таблица категорий присутствует в CSV столбца категорий в таблице фильмов.
  • Предложение соединения связывает две таблицы на основе условия find_in_set().
  • group_concat() объединяет все соответствующие категории имена для каждого идентификатора фильма в одну строку.
  • Предложение group by обеспечивает группировку результатов по идентификатору фильма, обеспечивая четкий и организованный вывод.

Результирующий вывод отображается идентификаторы фильмов вместе с соответствующими названиями категорий в формате массива. Это обеспечивает легкий доступ к соответствующим категориям без необходимости декодирования CSV в таблице фильмов.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3