用 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 的更高版本,DISTINCT
与 ORDER BY
一起使用会产生影响。ONLY_FULL_GROUP_BY
的设置开始起作用,如下面的 MySQL 手册页中所示,名为 MySQL Handling of GROUP BY 。