环境: MySQL 5.6
检索不同的列值,使用 DISTINCT
应用于单列
SELECT DISTINCT vend_id FROM products;
应用于多列,DISTINCT 关键字应用与所有列而不是前置它的列。
+----+-------------+---------+---------+----------+
| id | prod_price | vend_id | created | modified |
+----+-------------+---------+---------+----------+
| 1 | 1 | 1 | 1 | 1 |
| 2 | 2 | 1 | 2 | 2 |
| 3 | 2 | 3 | 3 | 3 |
| 4 | 1 | 1 | 11 | 11 |
| 5 | 1 | 10 | 111 | 111 |
+----+-------------+---------+---------+----------+
执行 SQL 语句:SELECT DISTINCT prod_price, ven_id from product,此时 DISTINCT 不是仅作用于 prod_price.
查询结果,如下:
mysql> select distinct prod_price, vend_id from product;
+-------------+---------+
| prod_pprice | vend_id |
+-------------+---------+
| 1 | 1 |
| 2 | 1 |
| 2 | 3 |
| 1 | 10 |
+-------------+---------+
由结果得出结论,distinct 是作用于 prod_price 与 vend_id 两列的合并值,所以相同的记录就不会再次出现
执行: select distinct id, prod_price, vend_id from product,所有的记录都会被返回,因为这些列的组合值永不相同。id 是自增长,且是主键。