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

Henter linket liste i MySQL-database

Nogle databasemærker (f.eks. Oracle, Microsoft SQL Server) understøtter ekstra SQL-syntaks til at køre "rekursive forespørgsler", men MySQL understøtter ikke nogen sådan løsning.

Problemet du beskriver er det samme som at repræsentere en træstruktur i en SQL-database. Du har bare et langt, tyndt træ.

Der er flere løsninger til at gemme og hente denne form for datastruktur fra en RDBMS. Se nogle af følgende spørgsmål:

Da du nævner, at du gerne vil begrænse "dybden", der returneres af forespørgslen, kan du opnå dette, mens du forespørger på listen på denne måde:

SELECT * FROM mytable t1
 LEFT JOIN mytable t2 ON (t1.next_id = t2.id)
 LEFT JOIN mytable t3 ON (t2.next_id = t3.id)
 LEFT JOIN mytable t4 ON (t3.next_id = t4.id)
 LEFT JOIN mytable t5 ON (t4.next_id = t5.id)
 LEFT JOIN mytable t6 ON (t5.next_id = t6.id)
 LEFT JOIN mytable t7 ON (t6.next_id = t7.id)
 LEFT JOIN mytable t8 ON (t7.next_id = t8.id)
 LEFT JOIN mytable t9 ON (t8.next_id = t9.id)
 LEFT JOIN mytable t10 ON (t9.next_id = t10.id);

Det fungerer som melasse, og resultatet kommer tilbage på én række (pr. linket liste), men du får resultatet.



  1. Opdatering af Oracle Table fra Excel VBA Macro ved hjælp af ODBC-forbindelse

  2. Advarsel:Kan ikke ændre header-oplysninger - headere er allerede sendt ved en fejl

  3. Den lagrede procedure for at få instansindstillingerne

  4. Gem data i aktivitetens onDestroy-metode