首页 >数据库 >mysql教程 >如何在SQL中高效地基于多列选择不同的行?

如何在SQL中高效地基于多列选择不同的行?

DDD
DDD原创
2025-01-23 05:56:12439浏览

How to Efficiently Select Distinct Rows Based on Multiple Columns in SQL?

基于多列高效选择唯一行

在处理数据表时,经常需要根据特定条件仅检索唯一行。在本例中,目标是从表中选择两列组合唯一的全部行。

最初的方法是使用 DISTINCTIN 子句的组合来识别唯一行:

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

然而,更有效且可靠的方法是使用 GROUP BY 子句:

<code class="language-sql">SELECT DISTINCT a,b,c FROM t</code>

这等效于:

<code class="language-sql">SELECT a,b,c FROM t GROUP BY a,b,c</code>

GROUP BY 子句按指定的列(在本例中为 salepricesaledate)对行进行分组,并消除重复行。以下查询将实现所需结果:

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

此查询根据 salepricesaledate 识别唯一的销售行,并将它们的状态更新为“ACTIVE”。子查询使用 GROUP BYHAVING 子句选择 salepricesaledate 的唯一组合。

以上是如何在SQL中高效地基于多列选择不同的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn