Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

selecione o registro duplicado e conte o registro da vírgula separado no mysql


A primeira coisa é que você deve normalizar sua estrutura, se livrar de valores separados por vírgulas e usar outra tabela para relacionar seus locais com sua tabela de postagens, veja Normalização do banco de dados ,para sua estrutura atual, o que você pode fazer é obter todos os locais da sua tabela e inseri-los em uma nova tabela e usar a função agregada em sua nova tabela
CREATE TABLE locaions (cities CHAR(255)) ;

SET @S1 = CONCAT(
  "INSERT INTO locaions (cities) VALUES ('",
  REPLACE(
    (SELECT 
      GROUP_CONCAT(`Location`) AS DATA 
    FROM
      `posts`),
    ",",
    "'),('"
  ),
  "');"
) ;

PREPARE stmt1 FROM @s1 ;

EXECUTE stmt1 ;

Isso inserirá todos os locais com dados repetidos na tabela de locais e, em seguida, usará a consulta abaixo para obter a contagem desejada
SELECT cities,count(*) 
FROM locaions 
group by cities

Demonstração