首页 > 解决方案 > 使用typo3扩展通量9.0.1更新colPos

问题描述

由于更新通量到 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 meldet:Dokumentation 1093 - 表 't1' 被指定了两次,既作为 'UPDATE' 的目标,又作为数据的单独源

标签: mysqltypo3flux

解决方案


MySQL 不允许在另一个子查询中再次引用正在更新的表,除非它在FROM子句(派生表)内。

但是,在这种特殊情况下,您可以使用“Self-Join”:

UPDATE `tt_content` as t1 
JOIN `tt_content` as t2 
  ON t1.l18n_parent = t2.uid 
SET t1.colPos = ((t2.tx_flux_parent * 100) + 11) 
WHERE t1.tx_flux_column = 'content'

推荐阅读