sql >> Database teknologi >  >> RDS >> Mysql

Hvordan finder jeg alle underordnede rækker i MySQL?

Se, Rekursiv MySQL-forespørgsel med relationel innoDB

Jeg havde sendt et svar i går for det samme

Opdatering:

Nedenfor er en function baseret på ovenstående link, men er blevet skræddersyet til din DELETE krav

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

Brug

CALL delete_relations(1)

For at slette alle poster og dets relationer for id = 1 honda

Håber det er nyttigt



  1. Migrering fra MySQL Enterprise til MariaDB 10.3

  2. Meddelelse af den generelle tilgængelighed af SQL Secure 4.0

  3. mysql:whoami?

  4. Sådan vælger du sammenligning af to kolonner som én kolonne i Oracle