Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hapus MySQL dalam satu tabel dengan id dari tabel lain

Gunakan delete bersama dengan join seperti ini:

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 |
+------+

Skala ini ke jumlah tabel yang berubah-ubah, mis.:

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

Ini akan menghapus dari a semua catatan yang dirujuk dari catatan b yang pada gilirannya dirujuk dari c . Anda juga dapat menambahkan klausa WHERE seperti ini:

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';

Jika Anda ingin membatasi jumlah baris yang akan dihapus, lakukan seperti ini:

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

Jika Anda ingin menghapus 500.000 baris pertama, Anda perlu menyaring baris mana yang lebih dulu, jadi Anda perlu membuat beberapa pengurutan di antara baris. Dengan kata lain Anda perlu mengurutkan baris berdasarkan beberapa kriteria dan kemudian membatasi seperti ini:

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. SQL:hitung semua catatan dengan kemunculan berturut-turut dengan nilai yang sama untuk setiap set perangkat dan kembalikan hitungan tertinggi

  2. Temukan posisi string dan gabung dengan baris tabel lain

  3. Masalah kumpulan koneksi

  4. Apakah saya memerlukan koneksi php mysql di setiap fungsi yang menggunakan database?

  5. mysql bagaimana menemukan jika setidaknya satu baris dari tabel referensi silang adalah nol atau kriteria