我正在使用 mysql 5.0.77 数据库使用以下查询:
Delete from IPADDRESS
where visitdate Not in (SELECT max(visitdate) FROM IPADDRESS WHERE USERNAME='MGSH0002')
and USERNAME='MGSH0002'
执行时出现此错误:
您不能在 from 子句中指定目标表 IPADDRESS 进行更新
当然不是最好的解决方案,但对于您的问题,这将解决问题:
delete i1 from
IPADDRESS i1,
IPADDRESS i2
where
i1.username = i2.username
and i1.username = 'MGSH0002'
and i1.visitdate < i2.visitdate
另一种更智能的解决方案是以下语句:
delete i1 from
IPADDRESS i1,
(select max(visitdate) visitdate from IPADDRESS where username = 'MGSH0002') temp
where
i1.username = 'MGSH0002'
and i1.visitdate < temp.visitdate
你不能,不幸的是 MySql 不允许这样做。
目前,您无法在子查询中更新表并从同一个表中进行选择。
从: