环境: MySQL 5.6

    检索不同的列值,使用 DISTINCT

    应用于单列
    SELECT DISTINCT vend_id FROM products;


    应用于多列,DISTINCT 关键字应用与所有列而不是前置它的列。

    1. +----+-------------+---------+---------+----------+
    2. | id | prod_price | vend_id | created | modified |
    3. +----+-------------+---------+---------+----------+
    4. | 1 | 1 | 1 | 1 | 1 |
    5. | 2 | 2 | 1 | 2 | 2 |
    6. | 3 | 2 | 3 | 3 | 3 |
    7. | 4 | 1 | 1 | 11 | 11 |
    8. | 5 | 1 | 10 | 111 | 111 |
    9. +----+-------------+---------+---------+----------+

    执行 SQL 语句:SELECT DISTINCT prod_price, ven_id from product,此时 DISTINCT 不是仅作用于 prod_price.

    查询结果,如下:

    1. mysql> select distinct prod_price, vend_id from product;
    2. +-------------+---------+
    3. | prod_pprice | vend_id |
    4. +-------------+---------+
    5. | 1 | 1 |
    6. | 2 | 1 |
    7. | 2 | 3 |
    8. | 1 | 10 |
    9. +-------------+---------+

    由结果得出结论,distinct 是作用于 prod_price 与 vend_id 两列的合并值,所以相同的记录就不会再次出现

    执行: select distinct id, prod_price, vend_id from product,所有的记录都会被返回,因为这些列的组合值永不相同。id 是自增长,且是主键。