查询价格从高到低的顺序,结果输出如图1所示

题目:查询价格从高到低的顺序,结果输出如图1所示

img


1、
SELECT
s.*,
( SELECT COUNT(1) + 1 FROM 水果 a WHERE a.price > s.price ) AS rank
FROM
水果 s
ORDER BY
s.price desc;
利用上面sql得到下图

img


2、

SELECT t.tname, t.price, t.rank
FROM
(SELECT u.tname,u.price, @rank := @rank + 1,
@last_rank := CASE
WHEN @last_price = u.price
THEN @last_rank
WHEN @last_price := u.price
THEN @rank
END AS rank
FROM
(SELECT * FROM 水果 ORDER BY price DESC) u,
(SELECT @rank := 0, @last_price := NULL, @last_rank := 0) r
) t;
利用上面sql得到下图

img

3、
SELECT
tmp.tname,tmp.price,
@j:=@j+1 AS j,
@n:=(CASE WHEN @price=tmp.price THEN @n ELSE @n + 1 END) AS n,
@k:=(CASE WHEN @price=tmp.price THEN @k ELSE @j END) AS rank,
@price:=tmp.price AS tprice
FROM
(
SELECT * FROM 水果 ORDER BY price DESC
) tmp,
(SELECT @k :=0,@j:=0,@n:=0,@price:=0) sdcore

利用上面sql得到下图

img

问题:请问如何排列才能得到图中的那种效果?

我的查出来直接就是你想要的效果,说明什么呢,说明可能还有个入库时间字段,或者你的数据入库顺序和题目中数据库数据入库顺序不同

img