0
votes

Supprimer les rangées qui ont des colonnes en double

ma table corpus code> est comme ça Je veux supprimer la ligne qui incluait dupliqué texte code> et restez 1 ligne.

#1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mydata.corpus.genre1' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by


2 commentaires

Quel est le message d'erreur?


J'ai ajouté l'article.


5 Réponses :


0
votes

Vous pouvez essayer ci-dessous - votre Table temporaire Création est correct, problème était la requête que vous avez utilisée le groupe par, vous devez ajouter toutes les colonnes dans groupe par clause ou besoin d'utiliser agrégation xxx


0 commentaires

0
votes

Essayez ceci xxx


0 commentaires

0
votes
DELETE FROM corpus
    WHERE id NOT IN
        (SELECT * FROM 
             (SELECT MIN(a.id) FROM corpus a GROUP BY a.text)
        b)

1 commentaires

Veuillez mettre votre réponse toujours dans le contexte au lieu de simplement coller du code. Voir ici pour plus de détails.



0
votes
CREATE TABLE new_corpus AS
SELECT a.*
  FROM corpus a
  JOIN (SELECT MIN(id) id FROM corpus GROUP BY `text`) b
    ON b.id = a.id;

1 commentaires

Réponse intelligente, BTW



0
votes

Étapes:

  1. J'utilise la méthode "Sélectionnez puis supprimez".
    li>
  2. Tag 1 - Utilisez Sélectionner des distincts pour obtenir le texte unique (text_test) de la table corpus li>
  3. tag 2 - Je me joins à nouveau le texte sélectionné sur la table corpus et obtenez l'identifiant à l'aide de la fonction "min ()" afin de sélectionner le premier identifiant du texte d'origine, et non l'ID dupliquer du texte d'origine, puis le regroupez-le par b.text_test pour obtenir tous les identifiants d'origine.
    li>
  4. TAG 3 - Sélectionnez uniquement les identifiants de la sélection précédente.
    li>
  5. TAG 4 - Vous pouvez maintenant supprimer les doublons en utilisant les identifiants d'origine "non in". li> OL>
        delete from corpus where id not in( /*tag 4 */
        select a.id from ( /* tag 3 */
            select min(b.id) id from ( /* tag 2 */
              select distinct text_test from corpus /* tag 1 */
            ) a
        left outer join corpus b
        on a.text_test = b.text_test
        group by b.text_test) a
        );
    


1 commentaires

Veuillez ajouter quelques explications à votre réponse en le modifiant, de sorte que d'autres puissent en apprendre d'elle