下面是mysql中的查询,我想判断branch_masterfinance类型的branch idyear是否等于manager中的branch idyear,然后根据manager中的branch id更新manager表中的状态

UPDATE manager as m1 
  SET m1.status = 'Y'
  WHERE m1.branch_id IN (
    SELECT m2.branch_id FROM manager as m2 
     WHERE (m2.branch_id,m2.year) IN (
        (
          SELECT DISTINCT branch_id,year 
            FROM `branch_master` 
           WHERE type = 'finance'
        )
     )
  )

但是犯了错误

表"m1"被指定两次,既作为"更新"的目标,也作为

推荐答案

这是一个典型的MySQL问题,通常可以通过从派生表中进行 Select 来避免,即,而不是

FROM manager AS m2

使用

FROM (select * from manager) AS m2

完整声明:

UPDATE manager
SET status = 'Y'
WHERE branch_id IN
(
  select branch_id
  FROM (select * from manager) AS m2
  WHERE (branch_id, year) IN
  (
    SELECT branch_id, year
    FROM branch_master
    WHERE type = 'finance'
  )
);

Mysql相关问答推荐

如何有效地计算共同的朋友/追随者?

在停靠容器中备份和恢复MySQL数据库时出现Unicode字符问题

如何将左联接的小计/总计行中的所有列作废

docker-compose:无法将应用程序服务连接到 mysql 数据库,收到错误:用户‘root’@‘localhost’访问被拒绝(使用密码:YES)

在 mySQL 中计算每日数组的每周指标

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

Select 构成每天聚合 MAX 的各个行

是否可以使用 IN 或 NOT IN 从没有关联其他表中任何行的表中返回这些名称?

MySQL 8.0 可以在 Select 语句中返回 JSON 对象数组吗?

如果其中一个表为空,则 mysql 中的查询会给出 0 个结果

生成直到 10 的平方数序列

谁能帮我优化低性能的mysql查询

MySQL DISTINCT 日期仅返回特定表的 1 个值.相同的查询适用于其他表

插入二进制数据会导致Data too long for column...

为什么一个 10 位的电话号码不能存储在长度为 10 的整数中?

如何从将分钟、天、月和年存储在不同列中的表中查询数据

mySQL 中的主数据库和 IF 错误?

获取Count(*)占GROUP BY中所有项目数的百分比

在 MySQL Workbench EER 图中的多个列上创建唯一约束

我可以在 PHP 中使用 PDO 创建数据库吗?