SQL : identification de combinaisons uniques sur plusieurs colonnes
Cet article aborde le défi consistant à trouver des combinaisons uniques de valeurs sur plusieurs colonnes dans SQL, en se concentrant spécifiquement sur la mise à jour des enregistrements de ventes marqués comme inactifs. L'objectif est d'identifier les ventes qui n'ont pas eu lieu le même jour au même prix et de mettre à jour leur statut en « ACTIF ». Une simple clause DISTINCT
ne suffira pas car elle ne fonctionne que sur des colonnes uniques.
La clause GROUP BY
offre une solution puissante :
SELECT a, b, c FROM t GROUP BY a, b, c;
Cela regroupe les lignes en fonction des combinaisons uniques de colonnes a
, b
et c
, obtenant ainsi le même résultat qu'une multi-colonne DISTINCT
(bien que GROUP BY
offre plus de fonctionnalités).
Pour mettre à jour les enregistrements de ventes, une requête imbriquée est efficace :
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 );
Cette requête utilise une sous-requête pour identifier les ventes avec des combinaisons uniques saleprice
et saledate
(où COUNT(*) = 1
). La requête externe met ensuite à jour le status
de ces ventes sur « ACTIVE ».
En utilisant GROUP BY
et des requêtes imbriquées, vous pouvez gérer et mettre à jour efficacement les données en fonction de combinaisons uniques de valeurs sur plusieurs colonnes. Cela fournit une méthode robuste et précise pour gérer des tâches complexes de manipulation de données.
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!