mysql - 在 MySQL 中选择随机最大值

标签 mysql

我有这张表:

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”

最佳答案

在同一个查询中选择 nameMAX(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/

相关文章:

php - SQL 语句中的多个 BETWEEN 和 LIMIT 运算符

javascript - 如何使用响应数据获取 Angular js中的枚举值

php - 如何将 php 变量传递到新页面以从数据库中删除一行?

php - 在映射器中注入(inject)数据库适配器

mysql - Visual Basic 从 mysql 表中获取数据

php - mysql中如何将一列中的属性值与另一列中的每个人进行比较?

java - HQL 使用 select 插入查询,(意外标记 : order near line 11))

mysql right join with group by 问题

MYSQL中型查询优化与子查询

c# - 是否有更好的方法使用 Visual Studios 调试器在 C# 中查看带有参数的 MySql 语句?