我需要更新我的数据库它是基于locationId的多行软删除

update device d
set d.deleteDate='2016-05-07'
where d.id in (select dtg.deviceId from devicestogroups dtg
               where dtg.groupId in (select g.id from `group` g
                                     where g.locationId ='1'));

当我运行查询时,得到错误:
错误代码:1175。您正在使用安全更新模式,并且尝试
更新不带WHERE的表,该表使用键列禁用safe
模式下,切换“首选项”->“SQL编辑器”中的选项并重新连接。
子查询将返回我知道的2条记录,因为子查询返回的2条记录不会更新,但我如何解决这个问题。我试图解决,但没有成功。

最佳答案

请尝试此操作,最好使用join,而不是使用IN的子查询:

UPDATE device d
INNER JOIN devicestogroups dtg ON dtg.deviceId = d.id
INNER JOIN `group` g ON g.id = dtg.groupId
    AND g.locationId ='1'
SET d.deleteDate='2016-05-07'

或者
UPDATE device d
INNER JOIN devicestogroups dtg ON dtg.deviceId = d.id
INNER JOIN `group` g ON g.id = dtg.groupId
SET d.deleteDate='2016-05-07'
WHERE g.locationId ='1'

10-05 20:10