档案上的问题似乎都与我的确切问题无关。

是否可以根据您在单个查询中具有的该订单的明细行数来对明细行进行排序?

考虑下面的简化表:

Order number Article number
------------ --------------
123           1
123           2
123           3
234           1
234           2
345           1
456           1
456           2
456           3
456           4
456           5


每个订单的明细行数为

Order number Number of lines
------------ ---------------
123           3
234           2
345           1
456           5


是否可以通过每个明细行的明细行总数按降序选择订单号,商品编号?换句话说,期望的结果是

Order number Article number
------------ --------------
456          1
456          2
456          3
456          4
456          5
123          1
123          2
123          3
234          1
234          2
345          1


我可以通过多个查询和临时表或额外的列来做到这一点。简单的SELECT,SELF JOIN和UNION都没有给我想要的结果。是否可以使用单个查询?

最佳答案

该查询应该起作用,因为它是从联接中获取计数,然后按计数对其进行排序。

select t1.orderNumber,  t1.articleNumber from myTable t1
inner join
(
  select orderNumber,  count(articleNumber) as count from myTable
   group by orderNumber

) t2
on t1.orderNumber = t2.orderNumber
order by t2.count desc, t1.orderNumber, t1.articleNumber


为了更好地说明这一点:

我们首先选择所有数据,然后内部联接一个表,该表具有每个订单号的计数,一旦有了该表,就可以按count DESC对其进行排序,这样我们就可以得到计数最高的订单号然后我们可以在Order By中添加其他排序

关于mysql - 您可以在单个mySQL查询中包括总计和明细行吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46897943/

10-14 12:58
查看更多