mysql - 选择前 N 行并处理并列情况

标签 mysql sql database

我想从表中获取前 3 行,但它还应该考虑并列情况。

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

+--------+---------+
| 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 行则不处理。 我该如何处理查询中的这种情况?

最佳答案

使用子查询获取第三高的成本:

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 专家。测试看看!)

关于mysql - 选择前 N 行并处理并列情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30615648/

相关文章:

ruby-on-rails - Rails 事件记录查询一起列出的 2 个属性

java - 卡夫卡中的空指针异常

mysql - 将 WHERE 子句与 NATURAL JOIN SQL 结合使用?

php - 计算从 PHP `mysql_query` 函数返回的行数的可靠方法是什么?

sql - 为表结构构建 SQL 查询

php - 使用 Join 查找 3 个表之间的特定值

sql - 根据前置条件对 SQL 结果进行排序

android - sqlite3按最大值查询并按第二个因素过滤

php - node.js MySQL 性能

mysql - 内容系统中的硬编码 URL vs 嵌套集 vs 组合