Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да намеря всички дъщерни редове в MySQL?

Вижте Рекурсивна заявка с MySQL релационен innoDB

Вчера бях публикувал отговор за същото

Актуализация:

По-долу е дадена function въз основа на горната връзка, но е пригодена за вашето DELETE изисквания

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

SQLPiddle

Използвайте

CALL delete_relations(1)

За да изтриете всички записи и връзките им за id = 1 honda

Надявам се да е полезно



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Strongloop:филтриране на данни с условия [и] и [или] заедно

  2. Защо данните от моето приложение за проучване на Django SessionWizardView не се показват в използваем формат в моята база данни MySQL?

  3. Подобряване на производителността на mysql LOAD DATA / mysqlimport?

  4. Променете името на съхранената процедура на MySQL „Сравняване на база данни“.

  5. Защо mysqli_real_escape_string има обект на връзка като първи параметър