Dans le processus réel de saisie de la base de données, si la quantité de données est relativement importante, il est inévitable que plusieurs enregistrements en double soient saisis pour certaines raisons. Alors, comment devrions-nous supprimer les lignes en double et en conserver une avec un identifiant plus grand. ou un disque plus long ? Quel petit disque.
La structure du tableau de données utilisée dans cet exemple est la suivante tdb_goods
Les données du tableau sont répétées comme indiqué dans la figure
Tout d'abord, la première étape consiste à utiliser group by pour connaître le contenu avec un nombre supérieur à 2 (c'est-à-dire les enregistrements en double) dans chaque groupe
mysql> SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUN T(goods_name)>=2; +----------+------------------------------+ | goods_id | goods_name | +----------+------------------------------+ | 20 | X3250 M4机架式服务器 2583i14 | | 19 | 商务双肩背包 | +----------+------------------------------+ 2 rows in set (0.01 sec)
Utilisez ensuite LEFT JOIN pour connecter la table d'origine aux résultats de la requête ci-dessus, supprimez les enregistrements en double et conservez les enregistrements avec des identifiants plus petits
mysql> DELETE t1 FROM tdb_goods AS t1 LEFT JOIN( SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_name)>=2) AS t2 ON t1.goods_na me = t2.goods_name WHERE t1.goods_id>t2.goods_id; Query OK, 2 rows affected (0.06 sec)
Comme Comme le montre l'instruction ci-dessus, les conditions sont celles du même nom, puis supprimez tous les enregistrements avec un grand Goods_id. De cette façon, vous pouvez obtenir l'effet souhaité.
Si vous souhaitez conserver l'identifiant le plus grand, il en va de même comme suit
mysql> DELETE t1 FROM tdb_goods AS t1 LEFT JOIN( SELECT max(goods_id) AS goods_i d,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_name)>=2) AS t2 ON t1.goods_name = t2.goods_name WHERE t1.goods_id<t2.goods_id; Query OK, 2 rows affected (0.03 sec)
Voici comment mysql supprime les lignes en double dans la table et conserve les enregistrements avec des identifiants plus petits (ou plus grands). Pour plus de contenu connexe, veuillez faire attention à PHP. Site chinois (www.php.cn) !