子选择

时间:2016-10-28 09:06:14

标签: mysql

我有一个包含帖子和评论的平面表。目前帖子和评论并没有真正相互联系,我只知道,评论存在于其相应帖子之前(就id列而言)。

改进的第一步是创建一个" commentforid"列并适当填写:

UPDATE mytable t
SET t.commentforid = (SELECT x.id
                      FROM mytable x
                      WHERE x.origin = 'POST'
                      AND x.id > t.id
                      LIMIT 1)
WHERE t.origin = 'COMMENT'

但是,查询失败并带有

  

您无法指定目标表格' t'用于FROM子句中的更新

有谁知道问题是什么?我无法从错误消息中做任何事情。

2 个答案:

答案 0 :(得分:1)

错误与您正在更新您选择的同一个表的事实有关,您可以使用临时表覆盖此情况

尝试使用表中的dinamic

{{1}}

答案 1 :(得分:1)

错误信息非常清楚。它告诉您,您无法从正在更新的同一个表中获取新值。

为什么?

想象一下(即使是一个错误)您正在尝试使用相同的记录和字段值更新记录中的字段。这对你有意义吗?