Maison > base de données > tutoriel mysql > Comment trouver des lignes en double avec des valeurs différentes dans une colonne spécifique ?

Comment trouver des lignes en double avec des valeurs différentes dans une colonne spécifique ?

Mary-Kate Olsen
Libérer: 2024-12-28 03:20:10
original
637 Les gens l'ont consulté

How to Find Duplicate Rows with Different Values in a Specific Column?

Sélection de lignes en double avec des valeurs de colonne divergentes

Cette requête de base de données vise à identifier les lignes en double en fonction d'une colonne spécifique tout en ignorant les valeurs des autres colonnes. Considérez le scénario suivant :

 ------ ------ </p>
<table>
<thead><tr>
<th>ARIDNR</th>
<th>LIEFNR</th>
</tr></thead>
<tbody>
<tr>
<td>1</td>
<td>A</td>
</tr>
<tr>
<td>2</td>
<td>A</td>
</tr>
<tr>
<td>3</td>
<td>A</td>
</tr>
<tr>
<td>1</td>
<td>B</td>
</tr>
<tr>
<td>2</td>
<td>B</td>
</tr>
</tbody>
</table>
<p>

L'objectif est de sélectionner les valeurs ARIDNR qui apparaissent plus d'une fois avec des valeurs LIEFNR distinctes.

Solution

Pour y parvenir, nous pouvons utiliser les éléments suivants requête :

SELECT *
FROM Table
WHERE ARIDNR IN (
    SELECT ARIDNR
    FROM Table
    GROUP BY ARIDNR
    HAVING COUNT(DISTINCT LIEFNR) > 1
)
Copier après la connexion

Cette requête utilise une sous-requête imbriquée pour identifier les valeurs ARIDNR qui répondent aux critères spécifiés. La sous-requête regroupe les lignes par ARIDNR et applique la fonction COUNT(DISTINCT LIEFNR), qui calcule le nombre de valeurs LIEFNR uniques associées à chaque ARIDNR. Si le nombre dépasse 1, l'ARIDNR est ajouté à une table temporaire.

La requête principale sélectionne ensuite toutes les lignes de la table d'origine où les valeurs ARIDNR correspondent à celles identifiées par la sous-requête. Cela donne le résultat souhaité :

 ------ ------ </p>
<table>
<thead><tr>
<th>ARIDNR</th>
<th>LIEFNR</th>
</tr></thead>
<tbody>
<tr>
<td>1</td>
<td>A</td>
</tr>
<tr>
<td>1</td>
<td>B</td>
</tr>
<tr>
<td>2</td>
<td>A</td>
</tr>
<tr>
<td>2</td>
<td>B</td>
</tr>
</tbody>
</table>
<p>

Cette méthode capture efficacement les lignes en double avec des valeurs LIEFNR variables, répondant à l'exigence initiale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal