"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como unir tabelas com campos de valores separados por vírgula em SQL?

Como unir tabelas com campos de valores separados por vírgula em SQL?

Publicado em 2024-11-16
Navegar:535

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

Consultando vários campos de junção com valores separados por vírgula

No SQL, ao lidar com tabelas contendo listas separadas por vírgula (CSVs) em em suas áreas, pode ser um desafio realizar junções de maneira eficaz. Este artigo explora um cenário específico em que a coluna de categorias em uma tabela de filmes contém vários IDs de categoria, e o objetivo é excluí-la completamente ao buscar os nomes das categorias correspondentes em uma tabela de categorias.

As tabelas a seguir ilustram o cenário :

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

Para realizar a junção desejada, podemos utilizar a função find_in_set() em conjunto com uma operação group_concat(). Aqui está a consulta:

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

Explicação da consulta:

  • find_in_set() verifica se uma substring especificada existe dentro de uma string, neste caso, se um ID de categoria do A tabela de categorias está presente no CSV da coluna de categorias na tabela de filmes.
  • A cláusula join vincula as duas tabelas com base na condição find_in_set().
  • group_concat() concatena todas as categorias correspondentes nomes para cada ID de filme em uma única string.
  • A cláusula group by garante que os resultados sejam agrupados por ID de filme, fornecendo uma saída limpa e organizada.

A saída resultante é exibida os IDs dos filmes junto com seus nomes de categorias correspondentes em um formato de array. Isso permite fácil acesso às categorias relevantes sem a necessidade de decodificar o CSV na tabela de filmes.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3