我有这张表:
id name bid
1 Test1 5.50
2 Test2 5.50
3 Test3 5.49
我想选择出价最高的行。如果另一行的最高出价相等,则它应随机选择最高出价行之一。
我试过:
SELECT name,max(bid) FROM table ORDER BY rand()
输出:
id name bid
1 Test1 5.50
我的问题是 id“2”从未显示,因为出于某种原因我的查询只选择了 id“1”
最佳答案
在同一个查询中选择 name
和 MAX(bid)
是没有意义的:您要求的是所有行的最高出价,加上一个不是的名称聚合,所以根本不清楚您将选择哪一行的名称。 MySQL 通常会选择您想要的“正确”答案(拥有最高出价的行之一)但不能保证,在所有其他数据库中都会失败,并且在 ANSI SQL 中无效。
要获得 最高出价行,请按出价排序并仅选择第一个结果。如果您想确保获得随机的最高出价行,而不仅仅是任意行,请在 order 子句中添加一个随机因素:
SELECT name, bid
FROM table
ORDER BY bid DESC, RAND()
LIMIT 1
关于mysql - 在 MySQL 中选择随机最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617973/