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

时间:2015-08-05 16:48:26

标签: php mysql random sql-order-by

我目前正在寻找MySQL按价格订购结果,然后输出价格最高的随机数据。 (几个会有相同的价格)

我已经查看了其他stackoverflow问题并找到了答案的人说,如果两个结果是相同的,你不能保证输出哪一个但是听起来有点小故障/黑客,是吗无论如何以最高结果订购一张桌子,然后选择一个随机的结果?

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

我的两个" bidPerCustomers"是0.25并且我想每次都选择其中一个,但是不要选择一个下注0.11的例子

先谢谢你们! 我知道我将不得不进行查询,然后从结果中选择一个随机的查询,但如果我能在查询开始时这样做会很好。

1 个答案:

答案 0 :(得分:0)

如果您只想从具有最大值的那些中选择任何一个,那么您可以干净地构建它:

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

这将使您拥有最大值的所有行。然后,您可以从该表中选择一个LIMIT 1,按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列上有索引,否则会造成严重破坏。