![MariaDB必知必会](https://wfqqreader-1252317822.image.myqcloud.com/cover/943/34339943/b_34339943.jpg)
上QQ阅读APP看书,第一时间看更新
4.5 检索不同的行
正如你所见,SELECT语句返回所有匹配的行。然而,如果你不需要每一个重复出现的值该怎么办呢?例如,假设你想要products表中所有产品的供应商ID:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/19a-i.jpg?sign=1739584882-L1cySDTJ5qMvkzQkhGs7rrhcbDc1Z3Rz-0-00bfa457e6b8278678e62e5bc0876a93)
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/19b-i.jpg?sign=1739584882-cCYqL78aNzwo6eu3ERldg1cBQHpQ2gBo-0-f494403b48a8427a9c8dc54b7f889d8d)
由于在products表中列出了14个产品,因此这个SELECT语句返回14行(尽管在列表中只有4个供应商)。因此,如何检索不同的值列表呢?
解决方案是使用DISTINCT关键字,顾名思义,该关键字指示MariaDB返回不同的值。
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/20-i.jpg?sign=1739584882-i3JL8z2TARxGbZEF3IX8vnK8gVeUpDM8-0-74dbc34c4420da75a8edd54150d8ecc3)
▼ 分析
SELECT DINSTNCT vend_id告诉MariaDB只返回不同的(唯一)vend_id的行,因此只返回了4行,如以下输出所示。DISTINCT关键字必须放置在列名之前。
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/20a-i.jpg?sign=1739584882-ebjDqaSdlYm5ivKvSaY5xnbhv3k1pARv-0-1a3fb96fd825a4e0dbc0c74e045a565f)
注意
不能部分使用DISTINCT DISTINCT关键字应用于所有的列,而不仅仅应用于其后的一列。如果指定“SELECT DISTINCT vend_id,prod_price”,会检索所有的行,除非指定两列都不同。