好吧,假设我的MySQL表设置了类似于:
的条目id code sold
1 JKDA983J1KZMN49 0
2 JZMA093KANZB481 1
3 KZLMMA98309Z874 0
我希望它能够在数据库中已经存在的范围内选择一个随机ID(或者只是从1-X开始),然后将它分配给一个变量,以便我自己采取行动。因此,假设我们要选择未售出的 代码(标记为0而不是1),然后我们选择它。
现在,它不一定是100%随机,它可以检查第一个是否被出售,如果没有,继续。但我不是百分之百确定如何通过这个。片段会受到赞赏,因为我可以自己轻松地解决问题,我只需要一个例子来看看我要去哪里。
答案 0 :(得分:2)
如何使用WHERE和ORDER BY RAND()
SELECT id, code
FROM tablename
WHERE sold = 0
ORDER BY RAND()
LIMIT 1
答案 1 :(得分:1)
如果您不需要随机,请不要使用它。它会对性能产生非常不利的影响。既然你在帖子中提到没有必要,我会建议使用Ezequiel上面的答案然后放弃兰特。有关详细信息,请参阅Most Efficient Way To Retrieve MYSQL data in random order PHP。
答案 2 :(得分:1)
您的代码似乎已经是随机的,所以为什么不采取第一项;如果您的数据库中有许多未售出的记录,那么执行典型的ORDER BY RAND()
会损害数据库性能。
SELECT *
FROM codes
WHERE sold = 0
LIMIT 1
FOR UPDATE;
我还添加了FOR UPDATE
以避免竞争条件,假设您正在使用交易,因为您稍后更新记录(实际销售它)。
答案 3 :(得分:0)
你试过吗
SELECT * FROM myTable WHERE sold = 0 ORDER BY RAND() LIMIT 1
答案 4 :(得分:0)
将ORDER BY RAND()
添加到SELECT
查询的其余部分是最直接的方法。