Mysql
 sql >> Database >  >> RDS >> Mysql

seleziona il record duplicato e conta il record da virgole separate in mysql

La prima cosa è che dovresti normalizzare la tua struttura eliminando i valori separati da virgola e utilizzare un'altra tabella per mettere in relazione le tue posizioni con la tabella dei tuoi post vedi Normalizzazione del database , per la tua struttura attuale quello che puoi fare è ottenere tutte le posizioni dalla tua tabella e inserirle nella nuova tabella, quindi utilizzare la funzione di aggregazione sulla tua nuova tabella

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 ;

Questo inserirà tutte le posizioni con dati ripetuti nella tabella delle posizioni e quindi utilizzerà la query seguente per ottenere il conteggio desiderato

SELECT cities,count(*) 
FROM locaions 
group by cities

Demo