Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tìm tất cả các hàng con trong MySQL?

Tham khảo, Truy vấn MySQL đệ quy với đổi mới quan hệDB

Tôi đã đăng một câu trả lời ngày hôm qua cho câu trả lời tương tự

Cập nhật:

Dưới đây là một function dựa trên liên kết trên, nhưng đã được điều chỉnh cho phù hợp với DELETE của bạn yêu cầu

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

Sử dụng

CALL delete_relations(1)

Để xóa tất cả các mục nhập và các quan hệ của nó đối với id = 1 honda

Hy vọng nó hữu ích



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ các mặt hàng trong giỏ hàng vào cookie và cơ sở dữ liệu

  2. Tìm kiếm / tìm kiếm các giá trị bị thiếu trong MySQL

  3. Tìm hiểu xem một bảng có XÓA trên CASCADE hay không

  4. Các thủ tục được lưu trữ có thể trả về một tập kết quả không?

  5. Các phương pháp hay nhất về tối ưu hóa cơ sở dữ liệu MySQL