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 )
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!