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

dapatkan daftar induk rekursif

Di sini, saya membuat sedikit fungsi untuk Anda, saya memeriksanya di database saya (MAMP) dan berfungsi dengan baik

use mySchema;
drop procedure if exists getParents;

DELIMITER $$
CREATE PROCEDURE getParents (in_ID int)
BEGIN
DROP TEMPORARY TABLE IF EXISTS results;
DROP TEMPORARY TABLE IF EXISTS temp2;
DROP TEMPORARY TABLE IF EXISTS temp1;

CREATE TEMPORARY TABLE temp1 AS
  select distinct ID, parentID
    from tasks
    where parentID = in_ID;

create TEMPORARY table results AS
  Select ID, parentID from temp1;

WHILE (select count(*) from temp1) DO
  create TEMPORARY table temp2 as
    select distinct ID, parentID 
      from tasks 
      where parentID in (select ID from temp1);

  insert into results select ID, parentID from temp2;
  drop TEMPORARY table if exists temp1;
  create TEMPORARY table temp1 AS
    select ID, parentID from temp2;
  drop TEMPORARY table if exists temp2;

END WHILE;


select * from results;

DROP TEMPORARY TABLE IF EXISTS results;
DROP TEMPORARY TABLE IF EXISTS temp1;

END $$
DELIMITER ;

kode ini akan mengembalikan semua orang tua ke kedalaman apa pun. Anda jelas dapat menambahkan bidang tambahan apa pun ke hasil

gunakan seperti ini

call getParents(9148)

misalnya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbarui daftar hal-hal tanpa menekan setiap entri

  2. Filter input null atau kosong menggunakan LOAD DATA INFILE di MySQL

  3. .NET, C#, LINQ, SQL dan OR-Mapping - Saya tidak mengerti :(

  4. terhubung dari jarak jauh ke mysql

  5. Desain Basis Data untuk menyimpan Pesan Obrolan antar orang