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

vælg duplikeret post og tæl post fra kommasepareret i mysql

Den første ting er, at du skal normalisere din struktur, slippe af med kommaseparerede værdier og bruge en anden tabel til at relatere dine placeringer til din posttabel, se Databasenormalisering , for din nuværende struktur, hvad du kan gøre er at hente alle placeringer fra din tabel og indsætte dem i en ny tabel, og brug derefter aggregatfunktionen på din nye tabel

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 ;

Dette vil indsætte alle placeringer med gentagne data i placeringstabellen og derefter bruge nedenstående forespørgsel for at få det ønskede antal

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

Demo




  1. MySQL:Bestil efter feltstørrelse/længde

  2. PHP Fatal fejl:Ufanget PDOException:kunne ikke finde driveren

  3. Java - Hvordan kalder man en orakelprocedure med brugerdefinerede typer?

  4. Hvordan indstilles primær nøgle til automatisk stigning i PostgreSQL?