用 DISTINCT 选择

SELECT 之后的 DISTINCT 子句消除了结果集中的重复行。

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 |
+---------+----------+

DISTINCT 适用于所有列以提供结果,而不是单个列。后者通常是对新 SQL 开发人员的误解。简而言之,结果集的行级别的重要性是重要的,而不是列级别的明显性。要想象这一点,请在上面的结果集中查看 Audi A1

对于 MySQL 的更高版本,DISTINCTORDER BY 一起使用会产生影响。ONLY_FULL_GROUP_BY 的设置开始起作用,如下面的 MySQL 手册页中所示,名为 MySQL Handling of GROUP BY