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

Cập nhật dọn dẹp cho các mục nhập trùng lặp

Được rồi, đây là những gì tôi muốn giới thiệu. Bạn muốn thay đổi mệnh đề where của mình để chỉ xác định các bản sao. Ngoài ra, bạn thực sự chỉ muốn xem xét các bản ghi đang hoạt động vì nó không quan trọng nếu có bản sao của các bản ghi không hoạt động.

Để xem có trùng lặp hay không, bạn có thể sử dụng exists . Để sử dụng tồn tại, trước tiên chúng ta sẽ viết một truy vấn con để lấy lại các bản ghi trùng lặp, hay bất kỳ thứ gì có cùng họ và tên, một id khác và cũng đang hoạt động. Nếu truy vấn con kéo thứ gì đó trở lại, tồn tại sẽ trả về true và chúng tôi sẽ cập nhật bản ghi. Nếu không có bản sao, truy vấn con sẽ không lấy bất kỳ bản ghi nào và bản ghi tồn tại sẽ trả về false. Sau đó, chúng tôi sẽ không cập nhật hồ sơ.

update u
set active = 0
From UserInfo u
where (SELECT count(*)
FROM UserRecords recs
where recs.UserId= u.UserId) = 0
and     u.active = 1
and     exists (Select 1
                From UserInfo u2
                Where u2.lastname = u.lastname
                and     u2.firstname = u.firstname
                and     u2.userid <> u.userid
                and     u2.active = 1)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm khóa ngoại kiểu char trong mysql

  2. Cách nối hai bảng từ các cơ sở dữ liệu khác nhau

  3. Danh sách tham số Chuỗi to SQL IN trong Python

  4. Có thể ẩn mật khẩu trong MySQL General / Slow Query Logs không?

  5. Tính toán decile từ tần suất trong MySQL