我想在MySql表中更新語句 - 只是將數據從一個用戶遷移到第二個用戶。只有具有相同唯一ID devid
的行尚未存在時,才應該遷移具體行。更新MySql表 - 在更新過程中測試一個字段的唯一性
,我使用的更新語句是:
update userdata as userdata1 set userid=${newuser}
where
userid=${olduser} and
userdata1.devid !=
(select devid from userdata as userdata2
where
userdata2.userid = ${newuser} and userdata2.`devid` = userdata1.`devid`)
MySQL的返回:
You can't specify target table 'userdata' for update in FROM clause
但是從另一種方式,類似的SELECT語句的作品,或類似的更新語句,當我測試數據在另一張同樣的桌子上工作。那麼這是一些限制,在更新期間不可能在同一張桌面上進行選擇?以及如何管理這個?
感謝,
英德日赫
難道一個'UNIQUE KEY'是相當有幫助嗎? – glglgl
我有UNIQUE KEY約束,但是這隻防止不會發生多次具有相同的DEVID,但是我需要管理更新而不嘗試這樣做,因爲整個查詢將隨着違反約束而失敗。 – sarsonj