[英]Select row where specific column has the highest value
如标题所示,我需要SQL query(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>
您将必须对这种类型的查询进行全表扫描。 但是,不应将20行的性能作为总体性能的指导。 数据库旨在处理更大的查询,而在人工时间范围内,0.009秒非常短。
我认为没有办法解决。
您可以使用greatest()
简化查询:
SELECT id
FROM table
WHERE fav > GREATEST(def, rop, tip, uio);
如果我不得不猜测,这会稍微减慢查询速度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.