Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

chọn bản ghi trùng lặp và đếm bản ghi từ dấu phẩy được phân tách trong mysql

Điều đầu tiên là bạn nên chuẩn hóa cấu trúc của mình, loại bỏ các giá trị được phân tách bằng dấu phẩy và sử dụng một bảng khác để liên kết các vị trí của bạn với bảng bài đăng của bạn xem Chuẩn hóa cơ sở dữ liệu , đối với bạn cấu trúc hiện tại, những gì bạn có thể làm là lấy tất cả các vị trí từ bảng của bạn và chèn chúng vào bảng mới, sau đó sử dụng hàm tổng hợp trên bảng mới của bạn

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 ;

Thao tác này sẽ chèn tất cả các vị trí có dữ liệu lặp lại trong bảng vị trí và sau đó sử dụng truy vấn bên dưới để có được số lượng mong muốn của bạn

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

Bản trình diễn




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách truy cập MySQL từ nhiều luồng đồng thời

  2. PHP mySQL - Bạn có thể trả về một mảng được liên kết với một chỉ số số không?

  3. Cách thêm khóa duy nhất vào bảng hiện có (với các hàng không phải là duy nhất)

  4. Yii2 - tham gia trái với nhiều điều kiện

  5. Chồng chéo Truy vấn Đặt chỗ