首页 >数据库 >mysql教程 >如何更新销售表中具有唯一日期价格组合的行?

如何更新销售表中具有唯一日期价格组合的行?

Susan Sarandon
Susan Sarandon原创
2025-01-23 05:52:081035浏览

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