去重——distinct
# 去重——distinct
# all
一般默认的查询语句都带有 all
,表示不去重,默认隐藏。
select all <FieldName> from <TableName>;
1
# distinct
若要对查询结果去重,则使用 distinct
,不是对针对于某一列,而是所有列
若要统计去重后记录的数量,则使用 count(distinct <FieldName>)
CREATE TABLE `car`
( `car_id` INT UNSIGNED NOT NULL PRIMARY KEY,
`name` VARCHAR(20),
`price` DECIMAL(8,2)
);
INSERT INTO CAR (`car_id`, `name`, `price`) VALUES (1, 'Audi A1', '20000');
INSERT INTO CAR (`car_id`, `name`, `price`) VALUES (2, 'Audi A1', '15000');
INSERT INTO CAR (`car_id`, `name`, `price`) VALUES (3, 'Audi A2', '40000');
INSERT INTO CAR (`car_id`, `name`, `price`) VALUES (4, 'Audi A2', '40000');
SELECT DISTINCT `name`, `price` FROM CAR;
+---------+----------+
| name | price |
+---------+----------+
| Audi A1 | 20000.00 |
| Audi A1 | 15000.00 |
| Audi A2 | 40000.00 |
+---------+----------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Example
+----+--------+------+--------+---------+
| id | name | age | gender | address |
+----+--------+------+--------+---------+
| 1 | 张伟 | 25 | 男 | 上海 |
| 2 | 李星 | 30 | 男 | 武汉 |
| 3 | 陈晓 | 23 | 女 | 北京 |
| 4 | 姚蓝 | 34 | 男 | 上海 |
| 5 | 朱隶 | 42 | 男 | 北京 |
| 6 | 张小雨 | 24 | 女 | 上海 |
| 7 | 丁雪雪 | 21 | 女 | 北京 |
| 8 | 万娇娇 | 18 | 女 | 武汉 |
| 9 | 余苗苗 | 19 | 女 | 上海 |
+----+--------+------+--------+---------+
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 不去重 all
select all address from manager;
# select address from manager;
1
2
2
+---------+
| address |
+---------+
| 上海 |
| 武汉 |
| 北京 |
| 上海 |
| 北京 |
| 上海 |
| 北京 |
| 武汉 |
| 上海 |
+---------+
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 去重 distinct
select distinct address from manager;
1
+---------+
| address |
+---------+
| 上海 |
| 武汉 |
| 北京 |
+---------+
1
2
3
4
5
6
7
2
3
4
5
6
7
# 统计去重后的数量
select count(distinct address) as '城市数量' from manager;
1
+----------+
| 城市数量 |
+----------+
| 3 |
+----------+
1
2
3
4
5
2
3
4
5
编辑 (opens new window)
上次更新: 2022/09/26, 16:55:15