2013-04-23 69 views
-2

当我尝试运行下面的查询,我得到“你不能指定目标表‘名单’的更新在FROM子句”MySQL的:你不能指定目标表更新在FROM子句

我知道其实还有不少关于类似问题的其他回复,但是我对SQL的把握不够强烈,无法从别人的解决方案中重建它。

update list 
set li = '6' 
where li = '5 
    and dn in (SELECT dn FROM list GROUP BY dn HAVING COUNT(*) < 2000) 
+5

此问题未显示任何研究工作。 **做你的作业很重要**。告诉我们你发现了什么,***为什么它不符合你的需求。这表明你已经花时间去尝试帮助你自己了,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案。 [FAQ](http://stackoverflow.com/questions/how-to-ask)。 – Kermit 2013-04-23 03:41:19

+0

欢迎来到Stack Overflow!分享你的研究有助于每个人告诉我们你试过了什么,以及它为什么不符合你的需求。这表明你已经花时间去尝试帮助自己,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案! – 2013-04-23 03:46:27

+1

@FreshPrinceOfSO如果是作业,至少OP会尝试发布他已经尝试过的东西。 – SkyDrive 2013-04-23 03:56:56

回答

2

您是否收到此错误?

不能在FROM子句

这是因为,如果你使用的是它的另一子查询语句不能直接更新表指定更新目标表“列表”。其中一个替代方法是将表格与自己结合起来。

UPDATE list a 
     INNER JOIN 
     (
      SELECT dn 
      FROM list 
      GROUP BY dn 
      HAVING COUNT(*) < 2000 
     ) b ON a.dn = b.dn 
SET  a.li = '6' 
WHERE a.li = '5 
+6

请;停止添加不必要的标签到问题。这只是让你看起来像你这样做来获得徽章。如果需要,我自己和其他人将继续删除它们并将它们回滚。 [参考文献](http://meta.stackexchange.com/questions/176318/what-is-considered-incorrect-tagging)。 – Kermit 2013-04-23 19:16:24

相关问题