用 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 。