【发布时间】:2018-07-24 09:09:45
【问题描述】:
我有一张表,偶尔导入时贷方和借方会切换 - 所以我有一些代码来设置变量,然后在匹配时进行交换,但是我无法让它在 IF 中运行语句,我试图将它放在存储过程中,但也无法在 IF 语句中运行存储过程。你会推荐什么?请参阅下面的代码。谢谢
set @TotalCr = (select max(TotalCredit) from mbs_headers);
If (@TotalCr = (select sum(PDebit) from mbs_details) and @TotalCr =! (select sum(PCredit) from mbs_details))
then UPDATE mbs_detailstest SET PCredit=@tmp:=PCredit, PCredit=PDebit, PDebit=@tmp
else
end;
或
set @TotalCr = (select max(TotalCredit) from mbs_headers);
If (@TotalCr = (select sum(PDebit) from mbs_details) and @TotalCr =! (select sum(PCredit) from mbs_details))
then exec TestSwapProc
else
end;
TestSwapProc 只包含
UPDATE mbs_detailstest SET PCredit=@tmp:=PCredit, PCredit=PDebit, PDebit=@tmp
样本数据 - 表:详细信息
Name, Credit, Debit
Mike, 100, 20
Mike, 10, 0
表格:标题
name, totalcredits, totaldebits
Mike, 20, 110
我需要切换详细信息表以反映真实值,因为它有时会以错误的方式插入 期望的结果:
表格:详细信息
Name, Credits, Debits
Mike, 20, 100
Mike, 0, 10
标题表保持不变,因为它总是正确的
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
-
@GordonLinoff 嗨,感谢您的评论,样本和所需的结果已被编辑,下面的答案对我不起作用。谢谢!
标签: mysql sql if-statement stored-procedures sql-update