2011-09-06 87 views
0

我想在mysql中創建一個過程以循環查詢結果中的每一行。所以我有這個結果查詢:循環遍歷每個行結果的過程

 
Person | Money1 | Money2 
    A | 100 | 100 
    B | 200 | 200 
    C | 150 | 150 
    D | 220 | 220 

我想比較每個人的錢,邏輯看起來像這樣。

 
A with B 
    Money1[A] --> Money1[B] 
    Money2[A] --> Money2[B] 
A with C 
    Money1[A] --> Money1[C] 
    Money2[A] --> Money2[C] 
A with D 
    Money1[A] --> Money1[D] 
    Money2[A] --> Money2[D] 

這是結束了LOOP1然後繼續..

 
B with C 
    Money1[B] --> Money1[C] 
    Money2[B] --> Money2[C] 
B with D 
    Money1[B] --> Money1[D] 
    Money2[B] --> Money2[D] 

這是環2月底最後..

 
C with D 
    Money1[C] --> Money1[D] 
    Money2[C] --> Money2[D] 

我已經發揮比較有錢了,它應該像這樣使用:

SELECT compare(from_money1, from_money2, to_money1, to_money2); 

這樣的結果將是這樣的:

 
Person | Result1 | Result2 
    AB | -100 | -100 
    AC |  -50 |  -50 
    AD | -120 | -120 
    BC |  50 |  50 
    BD |  -20 |  -20 
    CD |  -70 |  -70 

但我很困惑如何從結果查詢循環的話,我可以做到這一點的方法MySQL的,這將是非常有益的,如果那裏有一個例子吧。

回答

0

我想你已經過了複雜的事情。這是你所需要的全部(鑑於表名是錢)

select concat(m1.person, m2.person) as Person, 
     m1.money1-m2.money1 as Result1, 
     m1.money2-m2.money2 as Result2 
    from money m1, 
     money m2 
where m1.person < m2.person 
order by m1.person, m2.person;