我希望从表中获得前三排,但它也应该考虑领带情况。
我有一张看起来像这样的表
+--------+---------+
| NAME | COST |
+--------+---------+
| EA | 500 |
| SPSD | 475 |
| IA | 450 |
| NST | 450 |
| AAD | 350 |
| ECOM | 325 |
+--------+---------+
我想要的结果应该是这样的
+--------+---------+
| NAME | COST |
+--------+---------+
| EA | 500 |
| SPSD | 475 |
| IA | 450 |
| NST | 450 |
+--------+---------+
我的查询:
SELECT *
FROM TABLE
ORDER BY COST DESC
LIMIT 0,3
但它只返回前3行,如果第4行等于3,则不会处理。 如何从查询中处理这种情况?
答案 0 :(得分:2)
使用子查询获得第三高的费用:
select * from table
where cost >= (SELECT COST FROM TABLE
ORDER BY COST DESC
LIMIT 3,1)
ORDER BY c_cost DESC
(我不完全确定LIMIT 3,1
部分,因为我不是MySQL人。测试看看!)
答案 1 :(得分:1)
这是一种使用排名机制的方法。 请考虑以下
Crashlytics.getInstance().core.logException(e);
答案 2 :(得分:0)
试试这个:
SELECT NAME, COST FROM TABLE WHERE COST IN (
SELECT DISTINCT COST FROM TABLE ORDER BY COST DESC LIMIT 3
) ORDER BY COST DESC