我需要从最后一个条目中选择2和3最高值的代码。
SNO Userid Price
1 1004 10
2 1002 20
3 1001 300
4 1003 700
5 1002 80
6 1001 50
现在我需要选择1001,1002,1003,1004的最后入场价格。
结果:
1001 - 50, 1002 - 80, 1003 -700, 1004 -10.
第二个最高值是80个用户1002 第三个最高值是50个用户1001
答案 0 :(得分:2)
select * from price order by price desc limit 2,1
union
select * from price order by price asc limit 1
据我所知,你想要第二,第三和最小值。
答案 1 :(得分:1)
SELECT t.*
FROM YourTable t
WHERE NOT EXISTS(SELECT 1 FROM YourTable s
WHERE t.userid = s.userid
AND s.sno > t.sno)
ORDER BY t.price DESC
LIMIT 2
答案 2 :(得分:0)
您可以通过Userid
和SNO
的降序基于组给出行号来实现此目的。
<强>查询强>
select t.`SNO`, t.`Userid`, t.`Price` from(
select `SNO`, `Userid`, `Price`, (
case Userid when @curA
then @curRow := @curRow + 1
else @curRow := 1 and @curA := `Userid` end
) as `rn`
from `your_table_name` t,
(select @curRow := 0, @curA := '') r
order by `Userid`, `SNO` desc
)t
where t.`rn` = 1;
答案 3 :(得分:0)
示例查询:
SELECT * FROM table ORDER BY Price LIMIT 2 OFFSET 1 DESC
如果我理解你的问题!