mysql - 使用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' 的目标,又作为数据的单独源
解决方案
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'
推荐阅读
- ruby - 用于发送到 Sidekiq / Redis 的 Ruby ZIP 文件编码
- r - 如何将属性从表恢复到 R 中的数据框中?
- kubernetes - 关于 Kubernetes 的 initContainer 的一些问题
- c++ - 这两个片段有什么区别?
- haskell - 如何在 Haskell 中显示递归数据类型(树)的每个元素
- python - HackerRank 动态数组问题 - 代码中的运行时错误
- javascript - Javascript:时间间隔内的倒数计时器
- google-cloud-platform - 如何删除重复的 dns 区域?
- firebase - Firebase UI 电子邮件链接登录意图额外为空
- google-sheets - 如何替换Google表格单元格中字符串中N个位置的字符