MySQL 更新:每个派生 table 必须有自己的别名

MySQL UPDATE: Every derived table must have its own alias

MySQL 中的以下查询:

UPDATE e_element e1
 INNER JOIN
 (
 SELECT DVAL
 FROM e1
  INNER JOIN  e_element e2
   ON e1.ENT_OID = e2.ENT_OID
  WHERE
   e2.META_OID = 336810 AND
   e1.META_OID = 359462 AND
   e1.DVAL = '0001-01-01 00:00:00'
 )
SET e1.DVAL = e2.DVAL;

抛出以下错误:

Error Code: 1248
Every derived table must have its own alias

我用两个 select 语句尝试了几个不同的选项,但我永远无法实现我想要的结果,即在这些条件下将值从 e2 复制到 e1

您的查询有多个错误。 . .花括号,没有 on 子句,对 table 别名的不当引用,错误位置的 where 子句。

也许你打算:

UPDATE e_element e1 INNER JOIN
       e_element e2
       ON e1.ENT_OID = e2.ENT_OID
    SET e1.DVAL = e2.DVAL
WHERE e2.META_OID = 336810 AND
      e1.META_OID = 359462 AND
      e1.DVAL = '0001-01-01 00:00:00';

试试这个查询

UPDATE e_element e1 
  INNER JOIN e_element e2
       ON e1.ENT_OID = e2.ENT_OID
    SET e1.DVAL = e2.DVAL
WHERE e2.META_OID = 336810 
      AND e1.META_OID = 359462 
      AND e1.DVAL = '0001-01-01 00:00:00';

希望这对您有所帮助。