2016-02-13 47 views
-1

我有一個出價表,我想選擇一個隨機值。但我想按出價金額分組。從浮動分組隨機MySQL

+--------+------------+ 
| bid_id | bid_amount | 
+--------+------------+ 
|  1 | 0.00002 | 
|  2 | 0.00002 | 
|  3 | 0.00001 | 
|  4 | 0.00002 | 
|  5 | 0.00001 | 
|  6 | 0.00002 | 
+--------+------------+ 

因此,例如,我想選擇一個隨機值,其中bid_amount爲0.00002。這是我的查詢:

SELECT bid_id FROM bids 
WHERE bid_amount = ? 
ORDER BY RAND() 
LIMIT 1 

但由於某種原因,它似乎並沒有工作。似乎有一些奇怪的事情發生在mysql中的浮動,我無法在條件下正確匹配它們。

有什麼方法可以使用GROUP BY bid_amount來做到這一點,然後使用LIMIT 1LIMIT 1,1選擇第一行或第二行?

換句話說,從GROUP BY中選擇一個隨機值?

+0

你是什麼意思「似乎不工作」? –

+0

當我輸入0.00001作爲手動查詢中的where值時,它起作用。但是,當我使用PHP它不。 –

回答

1

這是浮點值的問題。一個解決方案是使用小數。否則,請嘗試如下所示:

SELECT bid_id 
FROM bids 
WHERE ABS(bid_amount - ?) < 0.0000001 
ORDER BY RAND() 
LIMIT 1 
+0

如何將列轉換爲小數點後5位小數?有沒有我可以運行的查詢來做到這一點? –

+0

@AmyNeville。 。 。你可以將它定義爲'decimal(10,5)'。 –