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. 変数が空でない間、Symfony2はAJAX呼び出しで空のJSONを返します

    2. sp_dbcmptlevelが非推奨になった後、SQL Serverデータベースの互換性を確認するにはどうすればよいですか?

    3. RLIKE演算子がMySQLでどのように機能するか

    4. 初心者向けのSQLServer2016での全文検索の実装