Maison >base de données >tutoriel mysql >Comment sélectionner efficacement des lignes distinctes en fonction de plusieurs colonnes dans SQL ?
Sélectionnez efficacement des lignes uniques basées sur plusieurs colonnes
Lorsque vous travaillez avec des tables de données, il est souvent nécessaire de récupérer uniquement des lignes uniques en fonction de conditions spécifiques. Dans cet exemple, l'objectif est de sélectionner toutes les lignes du tableau qui ont une combinaison unique de deux colonnes.
L'approche originale consistait à utiliser une combinaison de clauses DISTINCT
et IN
pour identifier des lignes uniques :
<code class="language-sql">UPDATE sales SET status = 'ACTIVE' WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id) FROM sales HAVING count = 1)</code>
Cependant, une méthode plus efficace et plus fiable consiste à utiliser la clause GROUP BY
:
<code class="language-sql">SELECT DISTINCT a,b,c FROM t</code>
Cela équivaut à :
<code class="language-sql">SELECT a,b,c FROM t GROUP BY a,b,c</code>La clause
GROUP BY
regroupe les lignes par colonnes spécifiées (dans ce cas, saleprice
et saledate
) et élimine les lignes en double. La requête suivante permettra d'obtenir le résultat souhaité :
<code class="language-sql">UPDATE sales SET status='ACTIVE' WHERE id IN ( SELECT id FROM sales S INNER JOIN ( SELECT saleprice, saledate FROM sales GROUP BY saleprice, saledate HAVING COUNT(*) = 1 ) T ON S.saleprice=T.saleprice AND s.saledate=T.saledate )</code>
Cette requête identifie les lignes de ventes uniques en fonction de saleprice
et saledate
et met à jour leur statut sur « ACTIVE ». La sous-requête utilise les clauses GROUP BY
et HAVING
pour sélectionner des combinaisons uniques de saleprice
et saledate
.
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!