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

Xóa mysql trong một bảng theo id từ bảng khác

Sử dụng delete cùng với join như thế này:

mysql> create table a (id int);
mysql> insert into a values (1), (2), (3), (4);
mysql> create table b (id int);
mysql> insert into b values (2), (3);
mysql> delete a from a join b on a.id=b.id where b.id > 2;
mysql> select * from a;
+------+
| id   |
+------+
|    1 |
|    2 |
|    4 |
+------+

Điều này chia tỷ lệ thành số lượng bảng tùy ý, ví dụ:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB;

Thao tác này sẽ xóa khỏi a tất cả các bản ghi được tham chiếu từ các bản ghi đó của b lần lượt được giới thiệu từ c . Bạn cũng có thể thêm mệnh đề WHERE như sau:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB
WHERE a.status='done' AND
      b.status='open' AND
      c.status='open';

Nếu bạn muốn giới hạn số hàng bị xóa, hãy làm như sau:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB
LIMIT 500000;

Nếu bạn muốn xóa 500000 hàng đầu tiên, bạn cần phải tinh chỉnh hàng nào trước, vì vậy bạn cần thiết lập một số thứ tự giữa các hàng. Nói cách khác, bạn cần sắp xếp các hàng theo một số tiêu chí và sau đó giới hạn như sau:

DELETE a 
FROM a 
JOIN b ON a.idA=b.idA 
JOIN c ON b.idB=c.idB
ORDER BY a.something
LIMIT 500000;


  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âu lệnh SHOW TABLES với nhiều giá trị LIKE

  2. ImportError:Không có mô-đun nào có tên là 'MySQL'

  3. tìm nạp dữ liệu từ cơ sở dữ liệu mysql trên cơ sở các loại nghỉ phép như Thi, Không lương, Hàng năm

  4. MySQL - Cách tách các giá trị trong các chuỗi đơn bằng cách sử dụng dấu phẩy

  5. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Fedora 14