正如您在标题中看到的,我需要SQL查询(MySql)来获取特定列具有最大值的行。
所以我需要选择fav
具有最高值的行。这意味着它大于def
,rop
,tip
和uio
。在我的情况下,它应该是第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>
答案 0 :(得分:0)
您将不得不对此类查询执行全表扫描。但是,20行的性能不应被视为整体性能的指导。数据库旨在处理更大的查询,而人类时间框架上的0.009秒则非常小。
我认为没有办法绕过它。
您可以使用greatest()
简化查询:
SELECT id
FROM table
WHERE fav > GREATEST(def, rop, tip, uio);
如果我不得不猜测,这会稍微减慢查询速度。