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

MySQL hợp nhất các bản ghi dữ liệu trùng lặp thông qua UPDATE / DELETE

Đây chỉ là một phép chiếu. Nó không cập nhật bảng cũng như xóa một số dữ liệu.

SELECT  MIN(ID) ID,
        Username,
        MAX(Red) max_Red,
        MAX(Green) max_Green,
        MAX(Yellow) max_Yellow,
        MAX(Blue) max_Blue,
        MAX(Orange) max_Orange,
        MAX(Purple) max_Purple
FROM    Colors
GROUP   BY Username

CẬP NHẬT

nếu bạn thực sự muốn xóa các bản ghi đó, trước tiên bạn cần chạy câu lệnh UPDATE trước khi có thể xóa các bản ghi

UPDATE  Colors a
        INNER JOIN
        (
            SELECT  MIN(ID) min_ID,
                    Username,
                    MAX(Red) max_Red,
                    MAX(Green) max_Green ,
                    MAX(Yellow) max_Yellow,
                    MAX(Blue) max_Blue,
                    MAX(Orange) max_Orange,
                    MAX(Purple) max_Purple
            FROM    Colors
            GROUP   BY Username
        ) b ON a.ID = b.Min_ID 
SET     a.Red = b.max_Red,
        a.Green = b.max_Green,
        a.Yellow = b.max_Yellow,
        a.Blue = b.max_Blue,
        a.Orange = b.max_Orange,
        a.Purple = b.max_Purple

Sau đó, bây giờ bạn có thể xóa các bản ghi,

DELETE  a
FROM    Colors a
        LEFT JOIN
        (
            SELECT  MIN(ID) min_ID,
                    Username
            FROM    Colors
            GROUP   BY Username
        ) b ON a.ID = b.Min_ID 
WHERE   b.Min_ID  IS NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. org.h2.jdbc.JdbcSQLException:Không tìm thấy ID cột

  2. Sắp xếp theo bảng tổng hợp được tạo_at trong Laravel

  3. ADDDATE () so với DATE_ADD () trong MySQL:Sự khác biệt là gì?

  4. Tìm kiếm không phân biệt dấu phụ trong MySQL (dấu tiếng Tây Ban Nha)

  5. MYSQL JOIN nếu trường không rỗng