繁体   English   中英

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

[英]Select row where specific column has the highest value

如标题所示,我需要SQL query(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> 

您将必须对这种类型的查询进行全表扫描。 但是,不应将20行的性能作为总体性能的指导。 数据库旨在处理更大的查询,而在人工时间范围内,0.009秒非常短。

我认为没有办法解决。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM