| 编写 SELECT 语句 / 单个表的 SELECT 语句 | |
之前的章节显示了如何选择和排序表中所有的数据。然而,您经常希望看到的是一个或多个特定列的数据。并且,公式是使用 Projection 和 FROM 子句指定列和表,并可以使用 ORDER BY 子句按照升序或降序对数据进行排序。
图: 查询
SELECT customer_num FROM orders;
图: 查询结果
customer_num
104
101
104
⋮
122
123
124
126
127
输出包括若干重复,原因是某些客户下了多个订单。有时您想要在投影中看到重复的行。而有时您却只想看到特异值,而不是每个值都出的频率。
图: 查询
SELECT DISTINCT customer_num FROM orders;
SELECT UNIQUE customer_num FROM orders;
图: 查询结果
customer_num
101
104
106
110
111
112
115
116
117
119
120
121
122
123
124
126
127
图: 查询
SELECT po_num FROM orders;
图: 查询结果
po_num
B77836
9270
B77890
8006
2865
Q13557
278693
⋮
图: 查询
SELECT po_num FROM orders ORDER BY po_num;
图: 查询结果
po_num
278693
278701
2865
429Q
4745
8006
8052
9270
B77836
B77890
⋮
图: 查询
SELECT ship_date, order_date, customer_num,
order_num, po_num
FROM orders
ORDER BY order_date, ship_date;
图: 查询结果
ship_date order_date customer_num order_num po_num
06/01/1998 05/20/1998 104 1001 B77836
05/26/1998 05/21/1998 101 1002 9270
05/23/1998 05/22/1998 104 1003 B77890
05/30/1998 05/22/1998 106 1004 8006
06/09/1998 05/24/1998 116 1005 2865
05/30/1998 112 1006 Q13557
06/05/1998 05/31/1998 117 1007 278693
07/06/1998 06/07/1998 110 1008 LZ230
06/21/1998 06/14/1998 111 1009 4745
06/29/1998 06/17/1998 115 1010 429Q
06/29/1998 06/18/1998 117 1012 278701
07/03/1998 06/18/1998 104 1011 B77897
07/10/1998 06/22/1998 104 1013 B77930
07/03/1998 06/25/1998 106 1014 8052
07/16/1998 06/27/1998 110 1015 MA003
07/12/1998 06/29/1998 119 1016 PC6782
07/13/1998 07/09/1998 120 1017 DM354331
07/13/1998 07/10/1998 121 1018 S22942
07/16/1998 07/11/1998 122 1019 Z55709
07/16/1998 07/11/1998 123 1020 W2286
07/25/1998 07/23/1998 124 1021 C3288
07/30/1998 07/24/1998 126 1022 W9925
07/30/1998 07/24/1998 127 1023 KF2961
图: 查询
SELECT customer_num, order_num, po_num, order_date
FROM orders
ORDER BY 4, 1;
SELECT customer_num, order_num, po_num, order_date
FROM orders
ORDER BY order_date, customer_num;
图: 查询结果
customer_num order_num po_num order_date
104 1001 B77836 05/20/1998
101 1002 9270 05/21/1998
104 1003 B77890 05/22/1998
106 1004 8006 05/22/1998
116 1005 2865 05/24/1998
112 1006 Q13557 05/30/1998
117 1007 278693 05/31/1998
110 1008 LZ230 06/07/1998
111 1009 4745 06/14/1998
115 1010 429Q 06/17/1998
104 1011 B77897 06/18/1998
117 1012 278701 06/18/1998
104 1013 B77930 06/22/1998
106 1014 8052 06/25/1998
110 1015 MA003 06/27/1998
119 1016 PC6782 06/29/1998
120 1017 DM354331 07/09/1998
121 1018 S22942 07/10/1998
122 1019 Z55709 07/11/1998
123 1020 W2286 07/11/1998
124 1021 C3288 07/23/1998
126 1022 W9925 07/24/1998
127 1023 KF2961 07/24/1998
图: 查询
SELECT customer_num, order_num, po_num, order_date
FROM orders
ORDER BY 4 DESC, 1;
在此示例中,数据先按 order_date 以降序排序再按 customer_num 以升序排序。