正如您在标题中所看到的,我需要 SQL 查询(MySql)来获取特定列具有最大值的行。
所以我需要选择 fav
具有最高值的行。这意味着它比 def
、rop
、tip
和 uio
更大。在我的例子中,它应该是第 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/