MySQL:按类似的列值排序

时间:2014-05-26 12:50:16

标签: mysql sql-order-by

我有一张这样的表:

Ordernumber | ProductID
1           | 49
2           | 49
3           | 1
4           | 49
5           | 7
6           | 680
7           | 7
8           | 49

我需要像下面这样订购,首先要显示具有大部分单一ProductID的订单号:

Ordernumber | ProductID
1           | 49
2           | 49
4           | 49
8           | 49
5           | 7
7           | 7
3           | 1
6           | 680

希望我解释得足够好。你是怎么做到的?

1 个答案:

答案 0 :(得分:1)

您可以使用自联接,通过计算每个产品的计数和计数列的订单结果

select t.* from t
join 
(
select count(*) count , ProductID
from t 
group by ProductID
  ) t2
on(t.ProductID = t2.ProductID)
order by t2.count desc, t.productid,t.ordernumber

Demo