mysql必知必会 - DISTINCT

      情景描述:使用SELECT查询特定或者全部列的数据,那么会查询出全部匹配的行数据。

   类比现实:某公司要统计供应商所在省份都有哪些省,假如10家公司是北京的,5家公司是广东的,如果按照SQL查询,那么会查询出来10条数据是北京、5条数据是广东,而作为管理层,我们只需要知道供应商来自北京和广东而已,不需要重复10次或5次,只需要不同的数据出现一次就好。再比如小A过生日收礼物啦,小A想看看都收到什么类型的礼物,比如小A收到5个人送的5本书,3个人送的红包,那么小A只需要知道送到的礼物类型是书和红包即可,不需要重复告知5次是书,告知3次是红包。

   查询情景:查询产品中所有供应商Id,但是不要重复的数据.

   错误查询:SELECT vend_id  FROM Products;

   查询结果:

   mysql必知必会 - DISTINCT_第1张图片

   可以看到很多数据都是重复若干次,而我们只需要相同的数据出现一次即可。

  

   解决方案:使用distinct关键字,指示mysql只返回不同的值。

   正确查询:SELECT DISTINCT vend_id  FROM Products;

   mysql必知必会 - DISTINCT_第2张图片  

  

   注意事项:

   1.将DISTINCT关键字放在列名前面;

  

   DISTINCT重点提醒

   2.不能部分使用DISTINCT,DISTINCT关键字应用于所有的列而不仅仅是前置它的列

   例如:

   demo:SELECT DISTINCT vend_id, prod_id FROM Products;

   mysql必知必会 - DISTINCT_第3张图片  

   SELECT DISTINCT vend_id, prod_id FROM Products;

   类似于

   SELECT DISTINCT (vend_id, prod_id) FROM Products;

   唯一性确定的数据是vend_id, prod_id组合的数据,而不是vend_id列数据,不管后面有多少个字段,DISTINCT唯一确定后面所有列的组合,而不是某一列数据,这一点必须明白!

你可能感兴趣的:(MySQL,mysql)