MYSQL查询-顺序由然后随机选择相同的值


MYSQL Query - order by and then select random of the same value

我目前正在MySQL中查找按价格排序的结果,然后输出一个具有最高价格的随机结果。(几种价格相同)

我看了看其他stackoverflow问题,发现人们的答案说,如果两个结果是相同的,你不能保证哪一个将被输出,但这听起来有点像一个小故障/黑客,无论如何要按最高的结果订购一个表,然后选择一个随机的结果?

$qry="SELECT * FROM campaignInformation ORDER BY campaignInformation.bidPerCustomer DESC LIMIT 1";

我的两个"bidPerCustomers"是0.25,我想每次随机选择一个,但不选择一个下注0.11的人,例如

提前感谢各位!我假设我将不得不进行查询,然后从结果中选择一个随机的,但是如果我能在查询中开始的话,那就太好了。

如果你只是想从那些最大值中选择任何一个,那么你可以清晰地构建它:

SELECT * FROM campaignInformation C WHERE C.bidPerCustomer = ( 
    SELECT MAX(D.bidPerCustomer) FROM campaignInformation D
)

这将把所有具有最大值的行相加。然后可以从表中选择一个,LIMIT 1, order by RAND()

SELECT * FROM (
    SELECT * FROM campaignInformation C WHERE C.bidPerCustomer = ( 
        SELECT MAX(D.bidPerCustomer) FROM campaignInformation D
    )
) AS X
ORDER BY RAND()
LIMIT 1

每个派生表都需要一个别名,因此'AS X'

请确保在您的bidPerCustomer列上有一个索引,否则将会发生混乱。