让我从我的问题中告诉你一个例子 例如,我们有一个名为(order)的表,它将所有订单和购买插入此表。
表A(订单):
+--------------------------+
| CustomerKey | ProductKey |
+--------------------------+
| 306545 | pro1 |
| 597864 | pro3 |
| 784678 | pro2 |
| 905479 | pro3 |
| 306545 | pro1 |
| 348965 | pro3 |
| 784678 | pro3 |
+--------------------------+
现在我想订购并获得我们的Bestselling产品
例如,在畅销产品列表中获得pro3排名
查询输出:
+-------------------------------+
| id | ProductKey | numberSold |
+-------------------------------+
| 1 | pro3 | 4 |
| 2 | pro1 | 2 |
| 3 | pro2 | 1 |
+-------------------------------+
我写了这个查询:
select ProductKey, count(1) as numberSold from A group by ProductKey order by count(1) desc
但它不完整!这个查询需要一行名为rank(查看下面的查询输出):
+-------------------------------------+
| id | ProductKey | numberSold | rank |
+-------------------------------------|
| 1 | pro3 | 4 | 1 |
| 2 | pro1 | 2 | 2 |
| 3 | pro2 | 1 | 3 |
+------------------------------+------+
答案 0 :(得分:0)
你可以这样做:
SET @counter = 0;
select ProductKey, count(1), as numberSold, (@counter := @counter +1) as rank from A group by ProductKey order by count(1) desc
我还要指出,如果您通过PHP运行此查询,那么您可以在查询中不使用rank列,因为当您遍历结果时,您可以只回显$counter
变量的值从1开始,每次迭代增加1。
答案 1 :(得分:-1)
您可以通过后台流程实现此目的。 运行 cronjob ,就像对产品进行排名的过程一样。