题目:查询价格从高到低的顺序,结果输出如图1所示
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得到下图
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得到下图
问题:请问如何排列才能得到图中的那种效果?
我的查出来直接就是你想要的效果,说明什么呢,说明可能还有个入库时间字段,或者你的数据入库顺序和题目中数据库数据入库顺序不同