DISTINCT用于行级去重,确保查询结果中每行唯一,作用于所有选定列的组合;而GROUP BY用于分组汇总,通常配合聚合函数使用,目的不是单纯去重而是统计分析。

在SQL中,
DISTINCT
DISTINCT
使用
DISTINCT
SELECT
SELECT DISTINCT column1, column2, ... FROM table_name;
举个例子,假设你有一个
orders
customer_id
SELECT DISTINCT customer_id FROM orders;
这会返回一个只包含唯一客户ID的列表。
如果你想找出哪些城市有客户下过订单,并且每个城市只出现一次,那可能是:
SELECT DISTINCT city FROM customers;
更有趣的是,
DISTINCT
SELECT DISTINCT customer_id, city FROM orders;
这里,只有当
customer_id
city
(A, X)
(A, Y)
DISTINCT
GROUP BY
这是个特别常见的问题,也是我刚开始接触SQL时常常混淆的地方。说白了,
DISTINCT
SELECT
而
GROUP BY
COUNT()
SUM()
AVG()
MAX()
MIN()
GROUP BY
举个例子,还是
orders
如果你想知道所有下过订单的客户ID:
SELECT DISTINCT customer_id FROM orders;
这会给你一个不重复的客户ID列表。
但如果你想知道每个客户下了多少个订单:
SELECT customer_id, COUNT(*) AS total_orders FROM orders GROUP BY customer_id;
这里,
GROUP BY
customer_id
COUNT(*)
当然,在某些特定场景下,
SELECT DISTINCT column_name FROM table_name;
SELECT column_name FROM table_name GROUP BY column_name;
GROUP BY
DISTINCT
DISTINCT
DISTINCT
一个常见的场景是数据质量检查。我经常用它来快速了解某个关键字段有多少种不同的输入值。比如,如果我发现一个
product_category
SELECT DISTINCT product_category FROM products;
另一个场景是报告和仪表盘的数据准备。当你需要为报告提供一个下拉列表,比如所有独特的国家、部门或产品类型时,
DISTINCT
在性能优化方面,虽然
DISTINCT
DISTINCT
此外,在连接(JOIN)操作后,有时会因为连接条件导致结果集出现逻辑上的重复。例如,一个订单可能有多个商品,如果你连接
orders
order_items
SELECT order_id FROM orders JOIN order_items ON ...
SELECT DISTINCT order_id FROM orders JOIN order_items ON ...
DISTINCT
使用
DISTINCT
一个最常见的误区是误以为DISTINCT
DISTINCT
SELECT
SELECT DISTINCT columnA, columnB FROM table;
columnA
columnB
columnA
columnB
columnA
SELECT DISTINCT columnA, columnB
columnA
columnB
再来就是NULL
DISTINCT
NULL
NULL
NULL
DISTINCT
NULL
NULL
WHERE column IS NOT NULL
COALESCE
NULL
性能考量也是一个实际的问题。在非常大的表上使用
DISTINCT
DISTINCT
DISTINCT
最后,一个小的提醒是,
DISTINCT
DISTINCT
ROW_NUMBER()
PARTITION BY
GROUP BY
DISTINCT
以上就是sql如何使用distinct去除查询结果中的重复值 sqldistinct去重的基础教程技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号