在同一个表中更新的子查询mysql

时间:2015-08-18 23:09:09

标签: mysql

我知道有些人会讨厌我,但我有这个:

UPDATE `f.forums` 
   SET `order` = 66
     , forumHeader = (SELECT forumName FROM  `f.forums` WHERE id = 1) 
 WHERE `id` = 8

显然没有工作,我搜索了2个小时的问题,我得到了很多内部联接和东西,但它没有帮助,我得到了同一张桌子上的名字..

我现在没有选择..

  

我确实离开了SELECT forumName

     

尝试加入,因某种原因不成功

     

我可以用PHP中的第二个$ sql查询处理这个问题,但我知道它可以在一个中完成..

1 个答案:

答案 0 :(得分:1)

1)你的`使用(可能)不正确应该是`f``forums`(除非表名实际上是f.forums,否则不应该在里面。

2)您无法将具有子查询的表更新为自身。

我相信这会达到你想要的效果:

UPDATE `f`.`forums` AS f1, `f`.`forums` AS f2
   SET f1.`order` = 66
     , f1.forumHeader = f2.forumName
WHERE f1.`id` = 8 AND f2.id = 1
;