sql >> Databáze >  >> RDS >> Mysql

Jak mohu získat ID předků pro libovolnou hloubku rekurze v jednom dotazu SQL?

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

za předpokladu, že se váš stůl jmenuje T. není testován. nejste si jisti, co se stane, když d nemá tři rodiče, pravděpodobně nic nechápete, můžete pro tyto případy zkusit LEFT JOIN, abyste získali hodnoty NULL pro skvělé rodiče. Poslední JOIN také není ve skutečnosti nutný, protože můžete jednoduše vybrat b.parent_id místo a.id, ale, víte, jen abyste si ten vzor odvezli domů;)



  1. Jak používat fond připojení s java, MySQL a Tomcat 6

  2. SELECT INTO OUTFILE nemůže zapisovat do souboru

  3. Pokud mám tabulku MySQL s více stejnými hodnotami sloupce, jak odstraním všechny nejnovější položky kromě dvou?

  4. mysqldump:Při zápisu došlo k chybě 32