Mysql
 sql >> база данни >  >> RDS >> Mysql

изберете дублиран запис и пребройте запис от запетая, разделени в mysql

Първото нещо е, че трябва да нормализирате структурата си, да се отървете от стойностите, разделени със запетая, и да използвате друга таблица, за да свържете местоположенията си с таблицата си с публикации, вижте Нормализация на базата данни ,за вашата текуща структура това, което можете да направите, е да получите всички местоположения от вашата таблица и да ги вмъкнете в нова таблица, след което да използвате агрегатна функция в новата си таблица

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 ;

Това ще вмъкне всички местоположения с повтарящи се данни в таблицата с местоположенията и след това ще използвате заявката по-долу, за да получите желания брой

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

Демо




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MySQL тригери - Как да предавам променливи към тригера?

  2. UTF-8 Проблем с базата данни

  3. Изтичане на памет в Java MySQL JDBC

  4. Как да създадете динамични обобщени таблици в MySQL

  5. Импортиране на CSV в MySQL с различен формат за дата