mysql必知必会 - DISTINCT

    xiaoxiao2021-12-14  16

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

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

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

       错误查询:SELECT vend_id  FROM Products;

       查询结果:

       

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

      

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

       正确查询:SELECT DISTINCT vend_id  FROM Products;

         

      

       注意事项:

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

      

       DISTINCT重点提醒

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

       例如:

       demo:SELECT DISTINCT vend_id, prod_id FROM Products;

         

       SELECT DISTINCT vend_id, prod_id FROM Products;

       类似于

       SELECT DISTINCT (vend_id, prod_id) FROM Products;

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

    转载请注明原文地址: https://ju.6miu.com/read-970531.html

    最新回复(0)