distinct用于查询时去除重复行,作用于select的所有列组合而非单列,语法为select distinct column from table;2. group by通过分组实现去重,常与聚合函数结合使用,适用于需要统计的场景,而单纯去重时distinct更直观;3. 使用distinct时常见误区包括误以为只对首列生效、忽略其不影响原始数据、性能在大数据量下可能下降及null值被视为相同;4. 其他去重方法包括使用row_number()窗口函数按分区和排序保留指定记录,适用于需保留最新或最优重复项的场景;5. 自连接或exists可用于识别重复数据,而创建唯一索引是从源头防止重复的根本手段。选择方法应根据具体需求权衡。

当我们在SQL里想要把重复的数据筛掉,只看那些独一无二的值或行时,
DISTINCT

说白了,用
DISTINCT
SELECT
DISTINCT
比如,如果你想看看一个
users

SELECT DISTINCT city FROM users;
这样,不管
users
要是你想看的是不重复的组合呢?比如,一个用户表里,我们想找出所有独一无二的“姓名和邮箱”的组合:

SELECT DISTINCT first_name, email FROM users;
这里有个很多人刚开始会误解的地方:
DISTINCT
first_name
first_name
first_name
DISTINCT
DISTINCT
提到去重,很多人自然而然会想到
GROUP BY
DISTINCT
而
GROUP BY
COUNT()
SUM()
AVG()
GROUP BY
举个例子,你想知道每个城市有多少用户:
SELECT city, COUNT(*) FROM users GROUP BY city;
这里
city
COUNT(*)
COUNT(*)
SELECT city FROM users GROUP BY city;
SELECT DISTINCT city FROM users;
所以,我个人习惯是,如果我只是想看“有哪些不重复的值”,不带任何聚合计算,那
DISTINCT
GROUP BY
GROUP BY
DISTINCT
虽然
DISTINCT
一个最常见的误解就是,有人觉得
DISTINCT
SELECT DISTINCT col1, col2 FROM table;
col1
col2
DISTINCT
SELECT
col1
col2
col1
col2
再来,
DISTINCT
DELETE
ROW_NUMBER()
性能方面,当你的表非常大,或者
DISTINCT
DISTINCT
还有一个小细节,就是
NULL
DISTINCT
NULL
NULL
DISTINCT
NULL
DISTINCT
我个人最常用,也觉得最强大的,就是窗口函数ROW_NUMBER()
PARTITION BY
基本思路是这样的:你先用
PARTITION BY
ORDER BY
ROW_NUMBER()
1
2
ROW_NUMBER() = 1
WITH RankedData AS (
    SELECT
        *,
        ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) as rn
    FROM
        user_logins
)
SELECT
    user_id, login_time, ip_address -- 选择你需要的列
FROM
    RankedData
WHERE
    rn = 1;这个方法在需要从一堆重复数据中,智能地选择保留哪一条时,简直无敌。比如,一个用户可能有多条登录记录,但你只关心他最近的一次登录。
此外,如果你是想找出哪些数据是重复的,而不是直接去重,你还可以用自连接(Self-Join)或者EXISTS
users
SELECT t1.* FROM users t1 JOIN users t2 ON t1.first_name = t2.first_name AND t1.id <> t2.id;
这种方法更多是用于“发现”重复,而不是“消除”重复。
最后,从预防的角度讲,创建唯一索引(CREATE UNIQUE INDEX
总的来说,
DISTINCT
ROW_NUMBER()
以上就是SQL语言DISTINCT如何去除重复 SQL语言最简单的数据去重方法的详细内容,更多请关注php中文网其它相关文章!
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号