sql >> Databasteknik >  >> RDS >> Mysql

Hämta hierarki från en tabell som denna

Prova denna lagrade procedur

CREATE PROCEDURE updatePath(in itemId int)
BEGIN
    DECLARE cnt int default 0;
    CREATE temporary table tmpTable 
    (
       `id` int, `name` varchar(15), `parent` int, path varchar(500)  
     )engine=memory select id, name, parent, name AS 'Path' from tbl where id = itemId;
    select parent into cnt from tmpTable;

    while cnt <> 0 do
       Update tmpTable tt, tbl t set tt.parent = t.parent, 
              tt.path = concat(t.name, ' > ', tt.path)
       WHERE tt.parent = t.id;
       select parent into cnt from tmpTable;
    end while;
    select * from tmpTable;
    drop table tmpTable;
END//

Fråga 1 :

call updatePath(10)

SQL-FIDDLE :

| ID |            NAME | PARENT |                                                       PATH |
----------------------------------------------------------------------------------------------
| 10 | "Smear em meat" |      0 | "Kitchenware" > "Knives" > "Meat Knives" > "Smear em meat" |

Hoppas detta hjälper



  1. Generera ett unikt användarnamn från för- och efternamn?

  2. Hur man hämtar användare från en befintlig databas för identityServer4

  3. Hur man exporterar SQL Server-data från tabell till en CSV-fil

  4. Hur man får sista posten i varje grupp i MySQL