所以,我有一个名为发票的表,目的是在重新提交数据时根据ammount值更新其列状态。
例如,我有这组结果:
INSERT INTO invoice (sap_code, document_number, description, net_change, status)
VALUES (:sap_code,:document_number,:description,:net_change, 'Not payed')
ON DUPLICATE KEY UPDATE
sap_code= :sap_code, document_number= :document_number, description= :description,
status = if(VALUES(net_change) = :net_change, VALUES(status), 'Paid')
使用多个IF状态来实现这一点,我只尝试了一个条件但是没有工作。由于我是绑定参数,因此不确定这是SQL问题还是PDO问题。
我希望我的查询将状态更新为" Payed"如果ammount是相同的并且" partyally支付"如果新的安装量小于当前值。状态"未支付"如果记录是新的。
这是我目前的查询:
ON DUPLICATE KEY UPDATE
sap_code= :sap_code, document_number= :document_number, description= :description,
status = CASE WHEN :net_change = net_change
THEN 'Paid'
ELSE 'Partially Paid' END,
net_change = :net_change
关于我做错了什么的任何建议?
提前致谢。
新测试(不工作)
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'progress-bar',
templateUrl: 'progress-bar.html'
})
export class ProgressBarComponent {
@Input() // @Input('Percent') does not work
PercentComplete: number = 0;
@Output()
PercentChange: EventEmitter<number> = new EventEmitter<number>();
constructor() { }
Increment() {
this.PercentComplete ++;
this.PercentChange.emit(this.PercentComplete);
}
}
答案 0 :(得分:0)
您应该将VALUES(net_change)
与表格中的列进行比较,而不是正在分配的参数。
ON DUPLICATE KEY UPDATE
sap_code= :sap_code, document_number= :document_number, description= :description,
status = IF(:net_change = net_change, 'Paid', VALUES(status)),
net_change = :net_change