Maison >base de données >tutoriel mysql >Comment mettre à jour des lignes avec des combinaisons date-prix uniques dans un tableau de ventes ?

Comment mettre à jour des lignes avec des combinaisons date-prix uniques dans un tableau de ventes ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-23 05:52:08981parcourir

How to Update Rows with Unique Date-Price Combinations in a Sales Table?

Mise à jour des enregistrements de ventes avec des combinaisons uniques date-prix

Ce guide montre comment identifier et mettre à jour les enregistrements de ventes qui possèdent des combinaisons prix-date uniques dans un tableau de ventes. L'objectif est de mettre à jour uniquement ces entrées de ventes sans aucun doublon partageant le même prix et la même date.

Une méthode implique un processus en deux étapes utilisant des requêtes SQL :

Étape 1 : Identifier les combinaisons uniques

La requête suivante sélectionne des combinaisons saleprice et saledate uniques, ainsi que leurs id correspondants et le nombre d'occurrences :

<code class="language-sql">SELECT DISTINCT saleprice, saledate, id, COUNT(*) AS count
FROM sales
GROUP BY saleprice, saledate
HAVING COUNT(*) = 1;</code>

Cette requête regroupe les enregistrements de ventes par saleprice et saledate, puis filtre les résultats en utilisant HAVING pour conserver uniquement les groupes comptant un, ce qui signifie des combinaisons uniques.

Étape 2 : Mise à jour du tableau des ventes

Pour mettre à jour le status de ces enregistrements de ventes uniques sur « ACTIF », utilisez la requête suivante :

<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
    ) AS unique_sales ON s.saleprice = unique_sales.saleprice AND s.saledate = unique_sales.saledate
);</code>

Cette requête met à jour la table sales, en définissant le status sur « ACTIVE » pour les enregistrements dont id correspond à ceux identifiés dans la sous-requête. La sous-requête récupère efficacement les valeurs id associées aux combinaisons uniques saleprice et saledate. Le INNER JOIN garantit que seuls les enregistrements correspondants sont mis à jour.

Cette approche exploite la puissance des clauses GROUP BY et HAVING pour effectuer efficacement une sélection distincte sur plusieurs colonnes et obtenir les mises à jour souhaité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!

Déclaration:
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