mysql - 选择特定列具有最高值的行

标签 mysql sql

正如您在标题中所看到的,我需要 SQL 查询(MySql)来获取特定列具有最大值的行。

所以我需要选择 fav 具有最高值的行。这意味着它比 defroptipuio 更大。在我的例子中,它应该是第 3 行。下面你可以看到我的 sql 表的一部分

我尝试过这个查询,但在我看来,20 条记录的速度非常慢(0,009 秒),任何其他查询都需要 max。 0,003秒。

SELECT id FROM table WHERE fav>def AND fav>rop AND fav>tip AND fav>uio

有没有更好的办法呢?谢谢

表格

table td {padding:4px 8px}
<table border="1">
<tr>
<td>id</td><td>fav</td><td>def</td><td>rop</td><td>tip</td><td>uio</td>
</tr>
<tr>
<td>1</td><td>293</td><td>331</td><td>773</td><td>225</td><td>982</td>
</tr>
<tr>
<td>2</td><td>123</td><td>533</td><td>224</td><td>111</td><td>632</td>
</tr>
<tr style="background-color:lightblue">
<td>3</td><td>982</td><td>398</td><td>182</td><td>321</td><td>222</td>
</tr>
<tr>
<td>4</td><td>343</td><td>765</td><td>700</td><td>901</td><td>300</td>
</tr>
</table>

最佳答案

您必须对这种类型的查询进行全表扫描。然而,20 行的性能不应被视为整体性能的指导。数据库旨在处理更大的查询,而 0.009 秒对于人类时间范围来说相当小。

我认为没有办法解决这个问题。

您可以使用greatest()简化查询:

SELECT id
FROM table
WHERE fav > GREATEST(def, rop, tip, uio);

如果我必须猜测,这会稍微减慢查询速度。

关于mysql - 选择特定列具有最高值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117649/

相关文章:

php - 无法连接 MySQL

mysql - 即使表不包含给定行,也返回 WHERE IN 子句行

.net - 检查是否安装了 SQL CE 的最佳方法,如果安装了是什么版本?

sql - 从单个数据点解析数据

c# - TSQL 从列可能不存在的临时表插入

php - 动态向sql select添加where子句

php - 我的 PHP 有问题

mysql - kubernetes 中的 HAProxy 连接 galera 集群

sql - 如果约束失败,则插入值或忽略行

sql - 通过Apache Phoenix向表中添加列的默认值等于HBase中现有列的值