У меня есть таблица отзывов, которая содержит отзывы пользователей и рейтинги в соответствии с некоторыми объектами. Бывают случаи, когда несколько пользователей проголосовали за тот же объект, который нежелателен, и вошли в систему из-за сбоя.Как выбрать сложные данные из таблицы и удалить ее из той же таблицы
Схема таблицы примерно так:
qa_id,int(10) //id of the entity
score,smallint(1)
user_id,int(3)
feed_time,datetime
Я пытался удалить одну из повторяющихся записей (к счастью, есть только одна дополнительная обратная связь) с этим запросом:
delete from feedback where md5(qa_id+feed_time) in
(
select md5(qa_id+feed_time)from feedback fb
group by fb.qa_id
having count(fb.qa_id) > 1
order by fb.qa_id
desc
)
It не отвечает:
Error Code : 1093
You can't specify target table 'feedback' for update in FROM clause
(0 ms taken)
, что я не могу выбрать и удалить из той же таблицы (т. е. если это появляется в подзапросе). У меня нет большого опыта в базах данных, и я не могу использовать какой-либо язык программирования для этого. ? :(
Любые предложения о том, как я могу сделать это с помощью запросов только
Checkout из ссылка позже в этом комментарии, он дает вам ответ. Является ли ваша таблица innodb или MySIAM? http://stactkoverflow.com/questions/10554627/delete-from-having-count-in-mysql –
@Yoram Моя таблица InnoDB –
Oke, просто проверяя, потому что mysiam блокирует таблицу при вставке, обновлении или удалении и т. Д., Но это также невозможно сделать. ссылка :) –