首頁 >資料庫 >mysql教程 >如何更新銷售表中具有唯一日期價格組合的行?

如何更新銷售表中具有唯一日期價格組合的行?

Susan Sarandon
Susan Sarandon原創
2025-01-23 05:52:08984瀏覽

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

使用獨特的日期價格組合更新銷售記錄

本指南示範如何辨識並更新銷售表中擁有唯一價格-日期組合的銷售記錄。 目標是僅更新那些銷售條目,不存在任何共享相同價格和日期的重複條目。

一種方法涉及使用 SQL 查詢的兩步驟過程:

第 1 步:辨識獨特的組合

以下查詢選擇唯一的 salepricesaledate 組合,及其對應的 id 和出現次數:

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

此查詢按 salepricesaledate 將銷售記錄分組,然後使用 HAVING 過濾結果以僅保留那些計數為 1 的群組,表示唯一的組合。

第 2 步:更新銷售表

要將這些唯一銷售記錄的 status 更新為“ACTIVE”,請使用以下查詢:

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

此查詢更新 sales 表,將 status 與子查詢中標識的記錄匹配的記錄的 id 設定為「ACTIVE」。子查詢有效地檢索與唯一的 idsaleprice 組合關聯的 saledate 值。 INNER JOIN 確保僅更新符合的記錄。

此方法利用 GROUP BYHAVING 子句的強大功能來有效地跨多個列執行不同的選擇並實現所需的更新。

以上是如何更新銷售表中具有唯一日期價格組合的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn