MySQL从另一个表更新表值

MySQL从另一个表更新表值,mysql,Mysql,我有两个表,分别是财务(mpc)预算和财务(mpc)问题。它们是连接的,具有以下条件- finance_mpc_budget.mpc_budget_id = finance_mpc_issues.ref_no 因此,我需要使用 finance_mpc_budget.mpc_budget_id where finance_mpc_budget.mpc_budget_id > 55 为此,我使用了以下查询 UPDATE finance_mpc_issues JOIN ( SE

我有两个表,分别是
财务(mpc)预算
财务(mpc)问题
。它们是连接的,具有以下条件-

finance_mpc_budget.mpc_budget_id = finance_mpc_issues.ref_no
因此,我需要使用

finance_mpc_budget.mpc_budget_id where finance_mpc_budget.mpc_budget_id > 55
为此,我使用了以下查询

UPDATE finance_mpc_issues 
JOIN (
      SELECT mpc_budget_id FROM finance_mpc_budget
      WHERE finance_mpc_budget.mpc_budget_id > 55 
      ORDER BY mpc_budget_id) a 
ON a.mpc_budget_id = finance_mpc_issues.ref_no 
SET finance_mpc_issues.ref_no = a.mpc_budget_id
但它生成了空的结果集。可能出了什么问题。有人能帮我吗

财务预算表 财务和货币政策委员会问题表 期望输出 你可以在下面试试-

update finance_mpc_issues 
join finance_mpc_budget a on a.mpc_budget_id = finance_mpc_issues.ref_no
set  finance_mpc_issues.ref_no=a.mpc_budget_id
where a.mpc_budget_id >55

您不能使用
ref\u no
加入,因为它是空的。因此,您的
finance\u mpc\u issues
表不会更新

基于您的表和数据,我假设
金额
列包含相同的值。因此,使用
amount
列可以获得所需的输出

Update finance_mpc_issues fi
set fi.ref_no = 
  (select fb.mpc_budget_id 
     from finance_mpc_budget fb 
     WHERE fb.amount = fi.amount
  );

更新
finance\u mpc\u issues.ref\u no
by
finance\u mpc\u budget.mpc\u budget\u id
有什么意义?如果您通过此字段连接这两个表,这意味着它们已经相同(否则您将无法连接它们)?根据更新的问题:无法连接这两个表(两个表上都没有定义可靠的联接键)。您可以联接我的金额(ugghhh),但这还不够可靠。因此,简单的答案是为了达到预期的结果,您必须首先更加深思熟虑地设计表架构以及关系。您试图做的是将联接键改装到
finance\u mpc\u issues
表中。这不是它的工作方式。您不能使用
ref\u no
进行联接,因为为空。
amount
列似乎包含相同的值。您可以使用
amount
进行联接,以获得所需的输出。两个表的
amount
是否每行都相同?但也得到了空结果set@MCITTrends为什么您希望
更新操作有一个结果集?@Erfan.财务参考号_mpc\U问题表仍然为空。若要加入这些表,必须将财务mpc\U预算表的mpc\U预算id插入财务mpc\U问题表的参考号
+-----------+--------+--------+
| issues_id | ref_no | amount |
+-----------+--------+--------+
|        10 |      56|  22000 |
|        11 |      57|  25000 |
|        12 |      58|  45000 |
|        13 |      59|  16000 |
+-----------+--------+--------+
update finance_mpc_issues 
join finance_mpc_budget a on a.mpc_budget_id = finance_mpc_issues.ref_no
set  finance_mpc_issues.ref_no=a.mpc_budget_id
where a.mpc_budget_id >55
Update finance_mpc_issues fi
set fi.ref_no = 
  (select fb.mpc_budget_id 
     from finance_mpc_budget fb 
     WHERE fb.amount = fi.amount
  );