我有一个出价表,我想选择一个随机值。但我想按出价金额对其进行分组。
+--------+------------+
| 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 1
或LIMIT 1,1
选择第一行或第二行?
换句话说,从GROUP BY中选择一个随机值?
答案 0 :(得分:1)
这是浮点值的问题。一种解决方案是使用小数。否则,尝试类似:
SELECT bid_id
FROM bids
WHERE ABS(bid_amount - ?) < 0.0000001
ORDER BY RAND()
LIMIT 1