Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

स्रोत और गंतव्य के बीच होप्स की संख्या की गणना कैसे करें?

यदि आप MySQL 8.0 चला रहे हैं, तो आप इसे पुनरावर्ती क्वेरी के साथ कर सकते हैं:

with recursive cte as (
    select source, delivery, 1 hops 
    from mytable t
    where not exists (select 1 from mytable t1 where t1.delivery = t.source)
    union all 
    select c.source, t.delivery, c.hops + 1
    from cte c
    inner join mytable t on t.source = c.delivery
)
select source, delivery, hops
from cte c
where hops = (select max(c1.hops) from cte c1 where c1.source = c.source)

पुनरावर्ती क्वेरी का एंकर नोड है जिसमें कोई आवक लिंक नहीं है; फिर, यह मूल नोड्स और हॉप्स की गिनती का ट्रैक रखते हुए प्रत्येक पथ पर चलता है। अंत में, बाहरी क्वेरी प्रति पथ अंतिम नोड पर फ़िल्टर करती है।

डीबी फिडल पर डेमो :

source | delivery | hops
:----- | :------- | ---:
s1     | f1       |    3
s2     | f2       |    4



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में प्रारंभिक मान और ऑटो वेतन वृद्धि कैसे सेट करें?

  2. डेटाबेस के लिए पहुँच अक्षम करें

  3. तालिका से * चुनें जहां तारीख =आज

  4. MySQL:क्वेरी एंड स्टेप पर लटकी हुई क्वेरीज़ को बहुत धीमा अपडेट/इन्सर्ट/डिलीट करें

  5. व्यवस्थापक के साथ अपना डेटाबेस कैसे प्रबंधित करें