在处理数据时,重复记录会导致混乱和不准确。为了解决这个问题,SQL 提供了有效的去重机制,可以轻松删除重复的数据。
如何使用 DISTINCT 关键字
最常用的去重方式是使用 DISTINCT 关键字,它会删除结果集中重复的值。以下示例演示如何使用 DISTINCT 去重两个字段:
sql
SELECT DISTINCT name, email
FROM customers;
这将只返回每位客户的唯一记录,其中 name 和 email 都是不同的。
使用 GROUP BY 子句
GROUP BY 子句也可以用于去重。它将结果分组,然后为每个组只返回一行数据。以下示例通过 name 和 email 进行分组:
sql
SELECT name, email
FROM customers
GROUP BY name, email;
这将为每个具有唯一 name 和 email 组合的客户返回一行数据。
结合 DISTINCT 和 GROUP BY
有时,您可能需要同时使用 DISTINCT 和 GROUP BY。这允许您去重某些字段,同时还能保持其他字段的唯一性。以下示例通过 name 和 email 进行分组,并只返回不同的 email:
sql
SELECT DISTINCT email
FROM customers
GROUP BY name;
这将为具有不同 email 的每个客户返回一行数据,即使他们的 name 相同。
处理 NULL 值
在处理 NULL 值时,DISTINCT 会将 NULL 视为其他任何值。这意味着它将保留具有 NULL 值的重复记录。要避免这种情况,可以使用 GROUP BY COALESCE() 函数:
sql
SELECT COALESCE(name, 'null') AS name
FROM customers
GROUP BY COALESCE(name, 'null');
这将将 NULL 值替换为 'null' 字符串,确保可以正确去重这些记录。