我目前正在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列上有一个索引,否则将会发生混乱。