0

我正在使用 mysql 5.0.77 数据库使用以下查询:

Delete from IPADDRESS
where visitdate Not in (SELECT max(visitdate) FROM IPADDRESS WHERE USERNAME='MGSH0002') 
and USERNAME='MGSH0002' 

执行时出现此错误:

您不能在 from 子句中指定目标表 IPADDRESS 进行更新

4

2 回答 2

3

当然不是最好的解决方案,但对于您的问题,这将解决问题:

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
于 2012-03-28T12:39:04.643 回答
1

你不能,不幸的是 MySql 不允许这样做。

目前,您无法在子查询中更新表并从同一个表中进行选择。

从:

http://dev.mysql.com/doc/refman/5.0/en/update.html

于 2012-03-28T12:30:13.153 回答