选择前N行并处理绑定情况

时间:2015-06-03 09:11:20

标签: mysql sql database

我希望从表中获得前三排,但它也应该考虑领带情况。

我有一张看起来像这样的表

+--------+---------+
| 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,则不会处理。 如何从查询中处理这种情况?

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