sql >> Database >  >> RDS >> Mysql

selecteer gedupliceerd record en tel record van komma gescheiden in mysql

Het eerste is dat je je structuur moet normaliseren, door komma's gescheiden waarden moet verwijderen en een andere tabel moet gebruiken om je locaties te relateren aan je berichtentabel. Zie Databasenormalisatie , voor uw huidige structuur kunt u alle locaties uit uw tabel halen en ze in een nieuwe tabel invoegen en vervolgens de aggregatiefunctie op uw nieuwe tabel gebruiken

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 ;

Hiermee worden alle locaties met herhaalde gegevens in de locatietabel ingevoegd en vervolgens de onderstaande zoekopdracht gebruiken om het gewenste aantal te krijgen

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

Demo




  1. Problemen met transactiereplicatie van SQL Server oplossen

  2. MySQL Meerdere tellingen in één query met hoofdletter

  3. Hoe TIME() werkt in MariaDB

  4. Hoe NU() werkt in MariaDB