我的數據庫架構是這樣的:遞歸MySQL查詢
Table t1:
id
valA
valB
Table t2:
id
valA
valB
我想要做什麼,是,在這些表中的一個給定的行集,發現有相同的兩個表中的行valA或valB(比較valA與valA和valB與valB,而不valA與valB)。 Then,我想查找與上一個查詢的結果中的行相同的valA或valB的行,以此類推。
Example data:
t1 (id, valA, valB):
1, a, B
2, b, J
3, d, E
4, d, B
5, c, G
6, h, J
t2 (id, valA, valB):
1, b, E
2, d, H
3, g, B
Example 1:
Input: Row 1 in t1
Output:
t1/4, t2/3
t1/3, t2/2
t2/1
...
Example 2:
Input: Row 6 in t1
Output:
t1/2
t2/1
我想具有水平搜索在該行被發現在結果(例如實施例1中:對於T1/2和t2/1,電平2爲第1級t1/5,...)A 遞歸的有限深度沒問題。隨着時間的推移,我可能希望在同一個模式中包含更多的表到查詢中。如果爲此目的很容易地擴展查詢將會很好。
但是最重要的是,的性能。你能告訴我最快的方法來完成這個嗎?
在此先感謝!
MySQL沒有遞歸查詢的支持。 – 2010-09-05 19:12:06
您將需要使用外部應用程序來構建和運行查詢,或編寫存儲過程。 – Mchl 2010-09-05 19:13:20
@OMG小馬:我知道。這就是爲什麼我說「有限的遞歸深度沒問題」。複製和粘貼是醜陋的,但它是一個解決方案。 @湯姆斯的回答聽起來有趣,更優雅,我會看看它。 – eWolf 2010-09-05 20:02:40