sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg få forfædre-id'er til vilkårlig rekursionsdybde i én SQL-forespørgsel?

SELECT c.id, b.id, a.id 
FROM T 
INNER JOIN T AS c on T.parent_id=c.id 
INNER JOIN T AS b ON c.parent_id = b.id 
INNER JOIN T as a ON b.parent_id = a.id

forudsat at dit bord hedder T. dog ikke testet. ikke sikker på, hvad der sker, hvis d ikke har tre forældre, formentlig forstår du ikke noget, kan du prøve LEFT JOIN i disse tilfælde for at få NULL-værdier for de gode forældre. Den sidste JOIN er heller ikke rigtig nødvendig, fordi du blot kan vælge b.parent_id i stedet for a.id, men du ved, bare for at køre mønsteret hjem;)



  1. Søgning efter fulde navn eller for- eller efternavn i MySQL-database med for- og efternavn i separate kolonner

  2. En vigtig ændring af udvidede hændelser i SQL Server 2012

  3. Kommandoer ude af synkronisering; du kan ikke køre denne kommando nu

  4. Import af felter med flere værdier til Solr fra mySQL ved hjælp af Solr Data Import Handler