我想在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]
这是loop2和最后一个结束..
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 :(得分: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;