我必须更新以及在单个查询中在MySQL中插入数据。我有两个表:一个是paytransactionfailure
,第二个是walletbalance
,我必须首先从paytransactionfailure
表中获取数据并更新此表的状态并在{{1}中插入数据表。这在一个查询中是否可行。
我的第一个表名:
paytransactionfailure
walletbalance
walletbalance
...........................................................
id fromid toid amount refund_status user_register
...........................................................
1 5 6 20 0 1
如果SELECT *来自paytransactionfailure WHERE refund_status ='0'并且...............................................
id user_id balance transaction_type
...............................................
1 5 100 credit
='1'并且fromid ='5'查询存在,那么我想要这个我必须更新user_register
表中的refund_status = 1同时我想在paytransactionfailure
表格中为fromid用户插入数据
想要这个输出
walletbalance
为此我使用了以下查询但是我已经成功更新记录但是我没有成功地在walletbalance中插入记录。
这是可能的还是我的方向错了?
...............................................
id user_id balance transaction_type
...............................................
1 5 100 credit
2 5 20 credit
答案 0 :(得分:0)
您要找的是INSERT ... ON DUPLICATE KEY UPDATE(插入新行或更新存在的行)或REPLACE(插入新行并覆盖任何已存在的行的数据)。
在这两种情况下,语句都依赖于表中的UNIQUE keys,缺少你的walletbalance表,并且语句只能在同一个表上执行。
您可能希望使用存储过程来执行这些操作 - 或者完全重新设计该过程,因为IMO所讨论的架构并不是针对您尝试使用它而设计的。