MySQL中使用DISTINCT关键字查询部分列
在MySQL中,DISTINCT关键字用于查询不重复的记录。当我们只想查询某个列中不重复的值,同时还需要查询该记录的其他列时,该怎么办呢?这篇文章将为您介绍在MySQL中如何使用DISTINCT关键字,同时还能返回部分列。
阅读更多:MySQL 教程
示例数据
让我们以一个“Orders”表为例。该表包含以下几列:订单编号(OrderID)、客户编号(CustomerID)、员工编号(EmployeeID)、 订单日期(OrderDate)、送货日期(ShippedDate)和订单状态(OrderStatus)。
OrderID | CustomerID | EmployeeID | OrderDate | ShippedDate | OrderStatus |
---|---|---|---|---|---|
1 | C001 | 101 | 2020/8/1 | 2020/8/3 | 1 |
2 | C002 | 102 | 2020/8/3 | 2020/8/5 | 2 |
3 | C001 | 103 | 2020/8/5 | 2020/8/7 | 1 |
4 | C003 | 104 | 2020/8/7 | 2020/8/8 | 3 |
5 | C002 | 105 | 2020/8/9 | 2020/8/12 | 2 |
查询除某列外的所有列
如果我们想查询订单表中所有不重复的客户编号,可以使用以下代码:
SELECT DISTINCT CustomerID FROM Orders;
输出结果为:
CustomerID |
---|
C001 |
C002 |
C003 |
此时,我们只查询了客户编号这一列,如果想同时查询该客户的其他信息,如该客户的订单数目、员工编号等。可以使用SELECT语句中列名的名称,像这样:
SELECT DISTINCT CustomerID, COUNT(OrderID) AS OrderCount, EmployeeID FROM Orders GROUP BY CustomerID;
输出结果为:
CustomerID | OrderCount | EmployeeID |
---|---|---|
C001 | 2 | 101 |
C002 | 2 | 102 |
C003 | 1 | 104 |
这个查询语句使用了GROUP BY关键字,使得我们能够同时返回每个客户的订单数量和员工编号。
查询某些列的不同值
除查询一个列之外,还可以通过在SELECT语句中指定要查询的列的名称的列表来查询除某个字段之外的所有列的不同值,代码如下:
SELECT DISTINCT CustomerID, OrderStatus FROM Orders;
输出结果为:
CustomerID | OrderStatus |
---|---|
C001 | 1 |
C002 | 2 |
C003 | 3 |
此时,我们查询了订单表中客户编号和订单状态这两列,并能够查询不同的客户编号和订单状态的值。
总结
使用DISTINCT关键字可以帮助我们在MySQL中查询不重复的记录。在SELECT语句中指定要返回的列名,可以同时查询其他列的值。如果只想查询某个列中的不同值,可以使用DISTINCT和该列的名称。