Maison > base de données > tutoriel mysql > Comment sélectionner efficacement des lignes distinctes en fonction de plusieurs colonnes dans SQL ?

Comment sélectionner efficacement des lignes distinctes en fonction de plusieurs colonnes dans SQL ?

DDD
Libérer: 2025-01-23 05:56:12
original
438 Les gens l'ont consulté

How to Efficiently Select Distinct Rows Based on Multiple Columns in 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>
Copier après la connexion

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>
Copier après la connexion

Cela équivaut à :

<code class="language-sql">SELECT a,b,c FROM t GROUP BY a,b,c</code>
Copier après la connexion
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>
Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal