2013-04-23 111 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

相關問題