有四種 sql 去除重復(fù)值的方法:1. 使用 distinct 關(guān)鍵字;2. 使用 group by 子句;3. 使用 over partition by 子句;4. 使用子查詢。
SQL去除重復(fù)值的常用方法
1. DISTINCT關(guān)鍵字
DISTINCT關(guān)鍵字用于從結(jié)果集中刪除重復(fù)的行。它將僅返回每個組中唯一的一行。
語法:
SELECT DISTINCT column_name FROM table_name;
登錄后復(fù)制
例如:
SELECT DISTINCT name FROM students;
登錄后復(fù)制
2. GROUP BY子句
GROUP BY子句根據(jù)指定的列對結(jié)果集進(jìn)行分組,并只返回每個組的聚合值(如COUNT、SUM)。通過使用GROUP BY子句,可以有效地消除重復(fù)值。
語法:
SELECT column_name FROM table_name GROUP BY column_name;
登錄后復(fù)制
例如:
SELECT name FROM students GROUP BY name;
登錄后復(fù)制
3. OVER PARTITION BY
OVER PARTITION BY子句允許根據(jù)指定的列對結(jié)果集進(jìn)行分區(qū),并為每個分區(qū)計算聚合值。它可以用來處理更加復(fù)雜的去重需求。
語法:
SELECT column_name,
ROW_NUMBER() OVER (PARTITION BY column_name) AS row_num
FROM table_name;
登錄后復(fù)制
例如:
SELECT name,
ROW_NUMBER() OVER (PARTITION BY name) AS row_num
FROM students;
登錄后復(fù)制
4. 子查詢
子查詢可以用來從表中選擇唯一的值。通過將子查詢作為主查詢中的條件,可以有效地實現(xiàn)去重。
語法:
SELECT column_name
FROM table_name
WHERE column_name IN (
SELECT DISTINCT column_name
FROM table_name
);
登錄后復(fù)制
例如:
SELECT name
FROM students
WHERE name IN (
SELECT DISTINCT name
FROM students
);
登錄后復(fù)制






