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

Bagaimana menemukan semua baris anak di MySQL?

Lihat, Kueri MySQL Rekursif dengan innoDB relasional

Saya telah memposting jawaban kemarin untuk hal yang sama

Pembaruan:

Di bawah ini adalah function berdasarkan tautan di atas, tetapi telah disesuaikan untuk DELETE . Anda persyaratan

CREATE PROCEDURE `delete_relations`(`_id` INT)
BEGIN
DECLARE  delete_row_ids varchar(200);
DECLARE id, id2 varchar(200);
DECLARE rows_affected int;

SET delete_row_ids  = _id;
SET id              = _id;
SET id2             = id;

WHILE id2 IS NOT NULL DO 
    SET id = NULL;
    SELECT GROUP_CONCAT( hierarchical_data.id ), CONCAT( GROUP_CONCAT( hierarchical_data.ID ),',',delete_row_ids) INTO id, delete_row_ids FROM hierarchical_data WHERE FIND_IN_SET( parentid , id2 ) GROUP BY parentid ;
    SET id2 = id;
END WHILE;  

DELETE FROM hierarchical_data where FIND_IN_SET(hierarchical_data.id, delete_row_ids);
SELECT row_count() INTO rows_affected;

if rows_affected > 0 THEN
SELECT delete_row_ids as row_ids_deleted;
ELSE
SELECT 'NO_ROWS_DELETED';
END IF;

END//

SQLFiddle

Gunakan

CALL delete_relations(1)

Untuk menghapus semua entri dan relasinya untuk id = 1 honda

Semoga bermanfaat



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah dengan rake db:migrate -

  2. (perlu saran) Bicara ke database server MySQL dari Aplikasi Android saya

  3. Kunci asing dan NULL di mySQL

  4. Cara terhubung ke MySQL menggunakan Node.js

  5. kesalahan mysql 2005 - Host server MySQL tidak dikenal 'localhost' (11001)