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