0
我需要更新表中的一列。更新值應該從另一個表中檢索。我所做的查詢語句:從兩個不相關的表更新查詢
update db1.t1 set location=(select countryName from db1.t1, db2.t2 where t1.num
between t2.beginNum AND t2.endNum limit 1)
我收到以下錯誤:
Error Code: 1093 You can't specify target table t1 for update in FROM clause.
然後,當我從FROM
條款
update db1.t1 set location=(select countryName from db2.t2 where num
between t2.beginNum AND t2.endNum limit 1)
刪除的表名t1
查詢工作但我不確定它是否正常工作。據我所知,如果我從多個表中檢索,我必須在FROM
子句中指定兩個表。我工作的兩張桌子沒有任何共同的專欄。但是,t1
中的值可以在t2
中的兩個值之間找到。第二個查詢是否絕對正確?在where
子句來自第一個表之後,查詢如何知道num
?我擔心我得到錯誤的價值。
如果你不能檢查數據是100%肯定,你可以嘗試去SQLFiddle.com並進行相同的測試,看看你的查詢工作或沒有 – jcho360
你有行後,改變量你運行查詢?它看起來像你沒有爲你實際上是更新表的條件,所以這將試圖在位置設置每個記錄到同樣的事情,如果你的子查詢返回一個記錄(我想,如果不是這樣,什麼都不會發生),否則由於記錄集大小不匹配,它會崩潰。此外,如果你需要從2個表得到countryNames,你必須做一個'UNION ALL'在這種情況下,這樣所有的結果將在同一列。 –