【发布时间】:2021-03-24 22:08:01
【问题描述】:
假设我有这样一张桌子:
Order_ID | Box_ID | Item_ID
------------------------------------
B | 1 | b
B | 2 | b
A | 2 | a
A | 3 | a
A | 4 | a
现在,当我按订单 ID 订购表格时,
SELECT * FROM table ORDER BY Order_ID, Box_ID;
结果将如下所示:
Order_ID | Box_ID | Item_ID
------------------------------------
A | 2 | a
A | 3 | a
A | 4 | a
B | 1 | b
B | 2 | b
但是现在,我希望 sql 语句首先考虑将 Box_ID 的相同值放在一起, 这样结果将如下所示:
Order_ID | Box_ID | Item_ID
------------------------------------
A | 2 | a
B | 2 | b
// despite order_ID being B, but box_ID is equal to previous value, so group together
A | 3 | a
A | 4 | a
B | 1 | b
但是下面的代码,
SELECT * FROM table ORDER BY Box_ID, Order_ID
将产生以下结果,因为它首先按字母顺序列出 Box_ID。
Order_ID | Box_ID | Item_ID
------------------------------------
B | 1 | b
A | 2 | a
B | 2 | b
A | 3 | a
A | 4 | a
如何输出我想要的结果?
【问题讨论】:
-
我们从哪一列知道
Box_ID2 行在前?表格本质上是无序的。
标签: mysql sql sql-order-by