【发布时间】:2019-04-29 07:17:16
【问题描述】:
由于更新到 9.0.1,我需要更新元素的 colPos。
这很好用:
UPDATE `tt_content`
SET colPos = ((tx_flux_parent * 100) + 11)
WHERE tx_flux_column = "content";
但我还需要更新本地化的内容元素。它在 tx_flux_parent 中有本地化的父 uid。但我需要标准语言的父 uid。
我需要通过 l18n_parent 获取 tt_content 中的值“tx_flux_parent”。 所以我试图用 l18n_parent 构建一个查询,如下所示:
UPDATE `tt_content` as t1
SET colPos = (( (SELECT t2.tx_flux_parent
FROM tt_content t2
WHERE t1.l18n_parent = t2.uid) * 100) + 11)
WHERE t1.tx_flux_column = "content";
得到这个:
MySQL 融合:Dokumentation 1093 - 表 't1' 被指定了两次,都 作为“更新”的目标和单独的数据源
【问题讨论】:
-
MySQL 不允许在
IN()子句等内的子查询中引用正在更新的表。但是您的伪代码还有另一个问题。如果从您的子查询中收到多行怎么办? -
是的,我更新了代码。如何从子查询(父)中获取值并将其设置在子行中?