我正在尝试在MySql表中创建更新语句 - 只是将数据从一个用户迁移到第二个用户。只有当第二个用户尚不存在具有相同唯一ID devid
的行时,才应迁移具体行。
我使用的更新语句是:
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语句工作,或类似的更新语句,当我测试另一个同一个表上的数据时也是如此。这是一个限制,在更新期间无法在同一个表上进行选择吗?以及如何管理这个?
谢谢,
英德日赫
答案 0 :(得分:0)
您可以使用左连接:
UPDATE userdata u1
LEFT JOIN userdata u2 ON u2.userid = :newuser AND u2.devid = u1.devid
SET u1.userid = :newuser
WHERE u1.userid = :olduser
AND u2.userid IS NULL;