Как использовать подзапрос в запросе удаления / обновления в MySQL - PullRequest
0 голосов
/ 28 марта 2012

Я использую базу данных mysql 5.0.77, используя запрос:

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

Я получаю эту ошибку при выполнении:

Не удается указать целевую таблицу IPADDRESSдля обновления из пункта

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Конечно, не лучшее решение, но для вашей проблемы это поможет:

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
1 голос
/ 28 марта 2012

Вы не можете, к сожалению, MySql не позволяет этого.

В настоящее время вы не можете обновить таблицу и выбрать из этой же таблицы в подзапросе.

От:

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

...