我正在使用此查询:
SELECT A.place_idx,A.place_id,B.TOTAL_CNT,(@r := @r + 1) AS rank FROM CUSTOM_LIST
AS A
INNER JOIN
(SELECT @r := 0)
AS C
INNER JOIN
(SELECT place_id,COUNT(place_id) AS TOTAL_CNT from COUNT_TABLE GROUP BY place_id)
AS B ON B.place_id=A.place_id order by B.TOTAL_CNT desc;
这给出了这个结果:
但我想要这个结果:
如何修改查询?我做错了什么?
答案 0 :(得分:5)
SELECT *,(@r := @r + 1) AS rank FROM
(
SELECT A.place_idx,A.place_id,B.TOTAL_CNT FROM CUSTOM_LIST
AS A
INNER JOIN
(SELECT place_id,COUNT(place_id) AS TOTAL_CNT from COUNT_TABLE GROUP BY place_id)
AS B ON B.place_id=A.place_id order by B.TOTAL_CNT desc
) AS T, (SELECT @r := 0) AS tt
答案 1 :(得分:0)
你想要添加
ORDER BY rank DESC
到您的SQL查询,以列出降序的排名。您也可以将DESC更改为ASC以更改顺序。
修改强>
我可以看到你已经有了一个订单,所以只需像这样编辑它。
你应该像以前一样用逗号添加它:
ORDER BY column1 DESC , column2 DESC
答案 2 :(得分:0)
您的C.rank会在处理时计算,而不是在排序后计算。无论如何,实际上不需要这些数据。由于您按度量标准对行进行排序,因此您知道第一行是第一行等等。您可以在将其拉出后在编程方面处理它。
或者,您可以将您拥有的内容放在内部选择中,然后执行排名。