Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć wszystkie wiersze podrzędne w MySQL?

Zobacz, Rekurencyjne zapytanie MySQL z relacyjne innoDB

Opublikowałem wczoraj odpowiedź na to samo

Aktualizacja:

Poniżej znajduje się function na podstawie powyższego linku, ale został dostosowany do Twojego DELETE wymagania

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

Użyj

CALL delete_relations(1)

Aby usunąć wszystkie wpisy i ich relacje dla id = 1 honda

Mam nadzieję, że będzie to pomocne



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. while($row =mysql_fetch_array($query)) nie działa za drugim razem

  2. Nie zezwalaj użytkownikowi na edycję tego samego rekordu

  3. Ostrzeżenie:nieoczekiwany znak na wejściu:(ascii=29) state=0 in

  4. Przechowywanie tagów w bazie danych. Przechowuj tag raz czy wiele razy?

  5. Liczba stronicowania CakePHP nie pasuje do zapytania?