Mysql 简明教程
MySQL - Distinct Clause
MySQL DISTINCT clause
MySQL 中的 DISTINCT 从一个表或多个表中返回不同值(唯一值)以与 SELECT 语句配合使用。它忽略特定列中存在的所有重复值,仅返回不同值。
此子句可用于多种场景,例如识别唯一客户姓名、唯一客户 ID 等。可与 WHERE、ORDER BY 和 GROUP BY 等其他子句结合使用以进一步筛选数据。
Syntax
以下是 MySQL 中 DISTINCT 子句的语法:
SELECT DISTINCT column1, column2, ..., columnN
FROM table_name
WHERE conditions // optional
其中,
-
(column1, column2,…​,columnN) 是我们想要唯一(不同)值所在的列。
-
table_name 是我们想要选择数据的表的名称。
-
WHERE conditions 是可选的。这些用于筛选数据。
Example
首先,让我们创建一个名为 CUSTOMERS 的表使用以下 INSERT 查询:
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
以下 INSERT INTO 语句将 7 条记录添加到上面创建的表中:
INSERT INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES
(1, 'Ramesh', 32, 'Hyderabad', NULL),
(2, 'Khilan', 25, 'Delhi', 1500.00),
(3, 'Kaushik', 23, 'Hyderabad', 2000.00),
(4, 'Chaital', 25, 'Mumbai', NULL),
(5, 'Hardik', 27, 'Vishakapatnam', 8500.00),
(6, 'Komal', 22, 'Vishakapatnam', 4500.00),
(7, 'Muffy', 24, 'Indore', 10000.00);
执行以下查询以显示 CUSTOMERS 表中插入的所有记录:
SELECT * FROM CUSTOMERS;
以下为 CUSTOMERS 表 −
现在,让我们检索 CUSTOMERS 表中的 ADDRESS 列,不用 DISTINCT 子句。
SELECT ADDRESS FROM CUSTOMERS;
ADDRESS 列中不忽略重复值。
在此,我们在 ADDRESS 列中使用 DISTINCT 子句
SELECT DISTINCT ADDRESS FROM CUSTOMERS;
DISTINCT Clause with COUNT() Function
MySQL count() 函数允许我们计算表的一列或多列中存在的唯一值的数量。让我们了解以下示例:
Example
在以下查询中,我们正在使用 MySQL COUNT() 函数来计算 CUSTOMERS 表中 ADDRESS 列的 DISTINCT 记录:
SELECT COUNT(DISTINCT ADDRESS) FROM CUSTOMERS;
DISTINCT on Multiple Columns
我们可以在表的多个列上使用 MySQL DISTINCT 关键字来返回这些列中所有唯一的值组合,即移除表中的冗余记录。