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

时间:2017-03-30 12:17:28

标签: mysql sql

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

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

我尝试过这个查询,但在20条记录中我觉得非常慢(0,009s),任何其他查询都需要最多。 0,003s。

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>

1 个答案:

答案 0 :(得分:0)

您将不得不对此类查询执行全表扫描。但是,20行的性能不应被视为整体性能的指导。数据库旨在处理更大的查询,而人类时间框架上的0.009秒则非常小。

我认为没有办法绕过它。

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

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

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