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

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

DDD
发布: 2025-01-23 05:56:12
原创
438 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板