SQL语句中,处理重复数据的命令有SELECT DISTINCT、GROUP BY、HAVING和UNION等。
SELECT DISTINCT语句用于从表中查询不同的值,它可以用来查询重复数据。例如:
SELECT DISTINCT 列名 FROM 表名;
GROUP BY子句用于将表中的数据分组,并且可以用来去除重复数据。例如:
SELECT 列名 FROM 表名 GROUP BY 列名;
HAVING子句是GROUP BY子句的扩展,它允许我们在分组之后进行过滤,也就是去除重复数据。例如:
SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 条件;
UNION子句用于将两个或多个表中的数据进行组合,并且会自动去除重复数据。例如:
SELECT 列1 FROM 表1 UNION SELECT 列2 FROM 表2;
有时候,数据表中会存在相同的记录。在获取表中记录时,相较于取得重复记录来说,取得唯一的记录显然更有意义。
我们之前讨论过的 SQL DISTINCT 关键字,与 SELECT 语句一起使用可以时,可以达到消除所有重复记录,只返回唯一记录的目的。
利用 DISTINCT 关键字来消除重复记录的基本语法如下所示:
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
考虑 CUSTOMERS 表,表中记录如下所示:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
首先,让我们先看一下 SELECT 语句是如何返回重复的薪水记录的:
SQL> SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY;
运行上述语句将会得到以下结果,其中 SALARY 为 2000 的记录出现了两次,即来自原始数据表的重复记录:
+----------+
| SALARY |
+----------+
| 1500.00 |
| 2000.00 |
| 2000.00 |
| 4500.00 |
| 6500.00 |
| 8500.00 |
| 10000.00 |
+----------+
现在,让我们在上面的 SELECT 查询中使用 DISTINCT 关键字,然后观察将会得到什么结果:
SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY;
上述语句将会产生如下结果,这一再没有任何重复的条目了:
+----------+
| SALARY |
+----------+
| 1500.00 |
| 2000.00 |
| 4500.00 |
| 6500.00 |
| 8500.00 |
| 10000.00 |
+----------+
SQL SELECT DISTINCT 语法SELECT DISTINCT语法用于仅返回不同的(different)值。在一张表内,一列通常包含许多重复的值...
SQL AVG() 函数AVG() 函数AVG() 函数返回数字列的平均值。SQL AVG() 语法SELECT AVG(column_name)FROM table_nameWHERE...
C++ switch 语句 C++ 判断一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 ...
C 库函数 - vprintf() C 标准库 - stdio.h描述C 库函数 int vprintf(const char *format, va_list arg) 使用参数列表发送格式化...
C 库函数 - fgetc() C 标准库 - stdio.h描述C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字...
C 库函数 - bsearch() C 标准库 - stdlib.h描述C 库函数 void *bsearch(const void *key, const void *base, size_t nitems, siz...