J'ai une table de commentaires qui contient les évaluations des utilisateurs et les évaluations selon certaines entités. Il y a des cas où plusieurs utilisateurs ont voté sur la même entité qui n'est pas souhaitable et qui sont entrés dans le système en raison d'un problème.Comment sélectionner des données complexes à partir d'une table et les supprimer de la même table
Le schéma de la table est un peu comme ceci:
qa_id,int(10) //id of the entity
score,smallint(1)
user_id,int(3)
feed_time,datetime
je tentais de supprimer l'une des entrées en double (heureusement il n'y a qu'une rétroaction supplémentaire) avec cette requête:
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
)
Il n'indique pas:
Error Code : 1093
You can't specify target table 'feedback' for update in FROM clause
(0 ms taken)
que je ne peux pas sélectionner et supprimer du même tableau (c'est-à-dire si apparaît dans une sous-requête). Je n'ai pas beaucoup d'expertise dans les bases de données et je ne suis pas autorisé à utiliser un langage de programmation pour faire la même chose. ? :(
Toutes les suggestions sur la façon dont je peux le faire avec des requêtes seulement
Commander sur le lien plus tard sur ce commentaire, il vous donne la réponse. Votre table est innodb ou MySIAM? http://stactkoverflow.com/questions/10554627/delete-from-having-count-in-mysql –
@Yoram Ma table est InnoDB –
Oke, vérifie juste parce que mysiam verrouille la table en faisant une insertion, une mise à jour ou une suppression etc. mais il est également impossible de le faire à la caisse le lien :) –