您的位置:

如何使用distinct去重多个字段

一、distinct去重一个字段

SELECT DISTINCT column1 FROM table_name;

以上语句将返回指定表中唯一的column1值列表。

例如我们有一个students表,其中包含了每个学生的姓名和年龄,如下所示:

|  姓名  |  年龄  |
|--------|--------|
|   小明 |     12 |
|   小红 |     11 |
|   小刚 |     12 |
|   小军 |     13 |
|   小丽 |     14 |

如果我们只想得到唯一的年龄值,可以使用如下语句:

SELECT DISTINCT 年龄 FROM students;

结果将返回:

|  年龄 |
|-------|
|    12 |
|    11 |
|    13 |
|    14 |

二、distinct去重规则

当我们在使用DISTINCT时,需要注意一些规则:

  1. DISTINCT用于去除重复行,而不是重复列。也就是说,如果一行中的任何一列与另一行中的任何一列相同,那么这两行都将被去除。
  2. DISTINCT是一种关键字,但是它不会把所有列都变成唯一的,它只会使指定的列唯一。如果我们指定多个列,将检查这些列的值是否与另一行的值完全相同。
  3. DISTINCT与GROUP BY不同,GROUP BY可以指定多个列。如果我们指定了多个列,则将按照这些列的值进行分组。

三、distinct后面多个字段

可以使用逗号分隔多列,指定多个列来指定distinct操作。例如:

SELECT DISTINCT column1, column2, column3 FROM table_name;

以上语句将返回指定表中唯一的column1、column2和column3值组合列表。

四、distinct两个字段

例如我们有一个orders表,其中包含了订单ID、产品ID、价格和客户ID等信息,如下所示:

|  订单ID  |  产品ID |  价格  |  客户ID |
|----------|--------|--------|--------|
|     1001 |      1 |   39.99|       1|
|     1002 |      2 |   29.99|       2|
|     1003 |      3 |   99.99|       3|
|     1004 |      1 |   39.99|       2|
|     1005 |      2 |   29.99|       4|
|     1006 |      3 |   99.99|       5|

如果我们指定订单ID和产品ID列唯一,那么我们可以使用如下语句:

SELECT DISTINCT 订单ID, 产品ID FROM orders;

结果将返回order表中唯一的订单ID和产品ID:

| 订单ID | 产品ID |
|--------|--------|
|   1001 |      1 |
|   1002 |      2 |
|   1003 |      3 |

五、distinct多个字段

如果我们想让客户ID、产品ID和价格的组合唯一,则可以使用如下语句:

SELECT DISTINCT 客户ID, 产品ID, 价格 FROM orders;

结果将返回order表中唯一的客户ID、产品ID和价格组合:

| 客户ID | 产品ID | 价格  |
|-------|--------|-------|
|      1 |      1 | 39.99 |
|      2 |      2 | 29.99 |
|      3 |      3 | 99.99 |
|      2 |      1 | 39.99 |
|      4 |      2 | 29.99 |
|      5 |      3 | 99.99 |